最近真的是腦子卡住了,寫過又忘記,重新溫習一下並弄個進階範例:
我們來新增三個類別:
1.main(主舞台 流程控管)
2.image1(舞台一)
3.GetSet(應該說分配器吧,訊息集散地之類的)
目的是我們把物件新增在(舞台一)中,再把(舞台一)叫到(main主舞台)統一控管,當按下(舞台一按鈕)後,會傳送事件到(GetSet)。因為接收到按鈕事件的地方是(舞台一)(可以寫到很裡面裡面,透過GetSet也能讓主舞台知道事件已被傳送或啟動)。好處是可以讓主舞台看起來比較乾淨而且流程清楚,當然也不會讓你腦子卡住。
Main(主舞台)
要點二:我們要在最上層收到事件是否已觸發就必須新增GetSet中的(SentMouseTouchBookID)事件在程式中。
我們來新增三個類別:
1.main(主舞台 流程控管)
2.image1(舞台一)
3.GetSet(應該說分配器吧,訊息集散地之類的)
目的是我們把物件新增在(舞台一)中,再把(舞台一)叫到(main主舞台)統一控管,當按下(舞台一按鈕)後,會傳送事件到(GetSet)。因為接收到按鈕事件的地方是(舞台一)(可以寫到很裡面裡面,透過GetSet也能讓主舞台知道事件已被傳送或啟動)。好處是可以讓主舞台看起來比較乾淨而且流程清楚,當然也不會讓你腦子卡住。
Main(主舞台)
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import Stage1.image_1;
import GS.GetSet;
import flash.events.Event;
/**
* ...
* @author EGG
*/
public class Main extends Sprite
{
private var game_stage1:image_1 = new image_1();
private var _GetSet:GetSet = GetSet.getInstance();
public function Main()
{
addChild(game_stage1);
_GetSet.addEventListener(GetSet.MouseTouchBookID , testID);
}
private function testID(e:Event):void
{
trace("OK");
}
}
}
image1(舞台一)
package Stage1
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import GS.GetSet;
import flash.events.*;
/**
* ...
* @author egg
*/
public class image_1 extends Sprite
{
private var urlReq:URLRequest = new URLRequest("image/pic01.jpg");
private var ldr:Loader = new Loader();
private var page1_draw1:MovieClip = new page1_draw_1();
private var _GetSet:GetSet = GetSet.getInstance();
public function image_1()
{
ldr.load(urlReq);
addChild(ldr);
addChild(page1_draw1);
page1_draw1.x = 536;
page1_draw1.y = 109;
page1_draw1.addEventListener(MouseEvent.MOUSE_DOWN, draw1PressDown);
}
private function draw1PressDown(e:MouseEvent):void
{
_GetSet.SentMouseTouchBookID();
}
}
}
GetSet(事件處理區)
package GS
{
import flash.events.Event;
import flash.events.EventDispatcher;
/**
* ...
* @author egg
*/
public class GetSet extends EventDispatcher
{
//---------------passEvnet
public static const MouseTouchBookID:String = "MouseTouchBookID";
private static var _instance:GetSet;
public function GetSet(pSingle:SingletonError) :void
{
if (SingletonError == null) throw new Error("SingletonError");
}
public static function getInstance():GetSet
{
if (GetSet._instance == null) {
GetSet._instance = new GetSet(new SingletonError());
}
return GetSet._instance;
}
//---------------passEvnet
public function SentMouseTouchBookID():void {
this.dispatchEvent(new Event(MouseTouchBookID));
}
}
}
class SingletonError{}
要點一:在舞台一裡面新增一個滑鼠事件並當按下時傳送(_GetSet.SentMouseTouchBookID();)在GetSet中已經設定好的事件名稱。要點二:我們要在最上層收到事件是否已觸發就必須新增GetSet中的(SentMouseTouchBookID)事件在程式中。
留言