2009年8月23日 星期日

ActionScript3 自定義事件使用

//客制化事件物件
package customEvent
{
  import flash.events.Event;

  public class CustomEvent extends Event
  {
    //事件名稱
    static public const ATTRIBUTE_CHANGED:String = "attributeChanged";
    //建構式
    public function CustomEvent(
      type:String,
      newAttribute:Object=null, oldAttribute:Object=null,
      bubbles:Boolean=false, cancelable:Boolean=false)
    {
       super(type, bubbles, cancelable);
       this.newAttribute = newAttribute;
       this.oldAttribute = oldAttribute;
    }

    //新的屬性值

    private var _newAttribute:Object;
    public function get newAttribute():Object
    {
  return _newAttribute;
    }
    public function set newAttribute(value:Object):void
    {
     _newAttribute = value;
    }

    //舊的屬性值
    private var _oldAttribute:Object;
    public function get oldAttribute():Object
    {
  return _oldAttribute;
    }
    public function set oldAttribute(value:Object):void
    {
  _oldAttribute = value;
    }

    override public function  clone():Event
    {
    return new CustomEvent(type , newAttribute, oldAttribute , bubbles , cancelable);
    }
   }
}


2009年8月19日 星期三

ActionScript 3.0繼承使用範例

Interface IAction
package com
{
/**
* ActionScript3 interface
* 在Actionscript3的介面中不可使用存取修飾子 

  * public protected private
*/


public interface IAction
{
 //加速
 function speedUp():void;
 //減速
 function slowDown():void;
 //發出聲響
 function makeSound():String;
}


PS.介面方法都是public

2009年8月17日 星期一

Flash IDE的document class 必需繼承MovieClip或是Sprite

Flash IDE環境下的document class 必需繼承MovieClip或是Sprite。

◎事由:

  • 在Flash開發環境上,如果是外部類別則需要繼承MovieClip或是Sprite兩種類別才能運作,而在影格上則不需要特別去做繼承因此產生了一個疑問為什麼?



  • Stage下有一個root,而直接寫在影格上的程式碼呼叫的gotoAndPlay()其實是呼叫了root上的gotoAndPlay()。


網路上找到的資訊補充:

  • 而由網路上找尋到趙老師的Blog上有說明每個顯示物件上有root屬性,而Stage屬性上的root會指向一個MainTimeline的Class。

  • 直接在影格上使用trace(this),會出現MainTimeline這個Class,所以直接在影格上的actionscript是在MainTimeline上作用,因此使用外部類別時需要要繼承MovieClip或Sprite才可運作。



◎衍生疑問:
所以常常看到文件中說不要使用外部類別的程式後還在影格中程式碼也跟這個有所關聯?