2010年2月24日 星期三

Flash的Label於Flex使用

因專案關係,需將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來操作吧!有空再來試驗一下!

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;

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;
}

弧度角度換算

弧度角度換算
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;
    }

AS3開啟系統檔案處理

package
{
     //顯示相關
     import flash.display.Sprite;
     import flash.display.DisplayObject;
     import flash.display.Graphics;
     import flash.display.Loader;
 

2010年2月9日 星期二

AS3反射

//簡單寫一個範例
package myFactory
{
      import flash.utils.Dictionary;   
      //↓從測試檔貼過來改寫貼錯
        private var _map:Dictionary = new Dictionary( );
     public class MyFactory
    {
       private var _map:Dictionary = new Dictionary( );
       public function MyFactory( )
      {
      }