因專案關係,需將flash繪製之swf給予Flex使用,Flex使用反射機制將swf內之元件反射出Class使用,但該元件使用到flash之Label,flash之Label使用fl.controls.Label,而Flex之Label是屬於mx.controls,兩者不相同,無法用來轉型操作。
可以使用一個非正規的偷懶方如下:
假設有一變數flashLabel型態為DisplayObject並且以參照了flash的Label
那麼可以非正規使用
if( (flashLabel as Object).hasOwnProperty("text"))
(flashLabel as Object).text = "SJ";
那麼我想因該是可以使用反射機制來取得Class來操作吧!有空再來試驗一下!
2010年2月24日 星期三
localToGlobal in Flex
localToGlobal空間座標轉換
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function init():void
{
trace("x="+contrastA.x +" , "+"y="+contrastA.y); //0,0
trace("x="+contrastB.x +" , "+"y="+contrastB.y); //0,0
trace("x="+contrastC.x +" , "+"y="+contrastC.y); //0,0
trace("-----------");
var p1:Point , p2:Point , p3:Point;
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function init():void
{
trace("x="+contrastA.x +" , "+"y="+contrastA.y); //0,0
trace("x="+contrastB.x +" , "+"y="+contrastB.y); //0,0
trace("x="+contrastC.x +" , "+"y="+contrastC.y); //0,0
trace("-----------");
var p1:Point , p2:Point , p3:Point;
globalToLocal in Flex
globalToLocal座標空間轉換
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
<![CDATA[
import mx.containers.Panel;
private function init():void
{
var p:Point;
//將btn所在的空間座標轉換成c1上的對應空間座標
p = c1.globalToLocal(new Point(btn.x , btn.y));
l.x = p.x;
l.y = p.y;
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
<![CDATA[
import mx.containers.Panel;
private function init():void
{
var p:Point;
//將btn所在的空間座標轉換成c1上的對應空間座標
p = c1.globalToLocal(new Point(btn.x , btn.y));
l.x = p.x;
l.y = p.y;
}
弧度角度換算
弧度角度換算
radian(弧度)
degree(角度)
PI(圓周率)
360度(角度) = 2PI
180度(角度) = 1PI
90度(角度) = 1/2 PI
PI ~= 3.1416個弧 = 180度角
一圓 = 2PI 約(6.2832弧)
(一個弧 = 57.2958角度)
180 / 3.1416 = 57.2958角度
角度轉弧度
radians = degrees * (Math.PI / 180)
(3.1416 / 180) = 一單位角度代表的弧度量
弧度轉角度
degress = radians * (180 / Math.PI)
(180度角 / 3.1416) = 一單位弧代表的角度量
radian(弧度)
degree(角度)
PI(圓周率)
360度(角度) = 2PI
180度(角度) = 1PI
90度(角度) = 1/2 PI
PI ~= 3.1416個弧 = 180度角
一圓 = 2PI 約(6.2832弧)
(一個弧 = 57.2958角度)
180 / 3.1416 = 57.2958角度
角度轉弧度
radians = degrees * (Math.PI / 180)
(3.1416 / 180) = 一單位角度代表的弧度量
弧度轉角度
degress = radians * (180 / Math.PI)
(180度角 / 3.1416) = 一單位弧代表的角度量
2010年2月10日 星期三
Flex PNGEncoder 與 BitmapData 配合將Stage畫面以.png檔存於本機端
//將stage上之顯示元件轉成.PNG檔案,並存於本機端,包含stage也可轉存
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.graphics.codec.PNGEncoder;
private var enable:Boolean;
private function init():void
{
enable = true;
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.graphics.codec.PNGEncoder;
private var enable:Boolean;
private function init():void
{
enable = true;
}
AS3開啟系統檔案處理
package
{
//顯示相關
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Loader;
{
//顯示相關
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Loader;