更新:私の質問をよりよく反映するようにタイトルを変更しました
みなさん、こんにちは:)
今日の私の質問は、あるサブクラスから別のサブクラスに送信しようとしている CustomEvent を中心に展開しています。
CustomEvent クラスを使用して、サブ クラスからメイン クラスにイベントを渡すことができましたが、サブ クラス間で誰がそれを行うべきかわかりません。
カスタム イベント クラス
package src.events {
import flash.events.Event;
public class CustomEvent extends Event
{
public static const CHANGE:String="onChange";
public static const COMPLETE:String="onComplete";
public static const IMAGE_LOADED:String="onImageLoaded";
public static const SWF_LOADED:String="onSWFLoaded";
public static const SWF_UNLOAD:String="onSWFUnload";
public static const CLICK:String="onClick";
public static const PAUSE_MOVIE:String="onPause";
public static const INTRO_CLICKED:String="introClicked";
public var params:Object;
public function CustomEvent(type:String, params:Object, bubbles:Boolean = false, cancelable:Boolean = false)
{
super(type, bubbles, cancelable);
this.params=params;
}
public override function clone():Event
{
return new CustomEvent(type, this.params, bubbles, cancelable);
}
public override function toString():String
{
return formatToString("CustomEvent","params","type","bubbles","cancelable");
}
}
サブクラス INTRO - ディスパッチ イベント
package src.display {
import gs.easing.*;
import gs.TweenLite;
import flash.text.*;
import flash.events.*;
import flash.display.*;
import flash.geom.Matrix;
import flash.geom.ColorTransform;
// ☼ ----------------------------------------- Imported Custom Classes
import src.events.CustomEvent;
// ☼ ----------------------------------------- Intro Class
public class Intro extends Sprite
{
private var playBtn:MovieClip;
// ☼ ----------------------------------------- Constructor
public function Intro():void
{
this.addEventListener(Event.ADDED_TO_STAGE, init);
}
// ☼ ----------------------------------------- Init
public function init(event:Event):void
{
draw();
}
public function draw():void
{
playBtn = new PlayThumb;
playBtn.buttonMode = true;
playBtn.x = 582;
playBtn.y = 259;
playBtn.alpha = 1;
addChild(playBtn);
playBtn.addEventListener(MouseEvent.MOUSE_UP, clicked);
}
private function clicked(e:MouseEvent):void
{
trace("clicked big play");
dispatchEvent (new CustomEvent(CustomEvent.INTRO_CLICKED, {}));
trace("event = "+CustomEvent.INTRO_CLICKED);
}
}
サブクラス NAVIGATION - イベントをリッスンしている場所 Navigation クラス内でこの関数を呼び出す必要があります。
function introPlayButtonClick(e:CustomEvent):void
{
trace("introPlayButtonClick called");
TweenLite.to(buttons[0], 1, {y:20, ease:Strong.easeOut});
TweenLite.to(buttons[1], 1, {y:navBtnY, ease:Strong.easeOut});
TweenLite.to(introTab, 1, {y:60, ease:Strong.easeOut});
TweenLite.to(scrollerMov, 1, {y:60, ease:Strong.easeOut});
$btn1 = true;
$btn2 = false;
trace("introPlayButtonClick called --- end");
}
わかりましたので、私の問題はナビゲーション クラスにあると思います。ここに addEventListener を正しく追加するにはどうすればよいですか? introPlayButtonClick 関数でトレースを取得できません。
PAUSE_MOVIE イベントを使用して Main クラスでどのように機能したかは、変数名 nv を介して eventListener を Navigation クラスにアタッチした場合です。
nv.addEventListener("onPause", pauseMovie); // Inside of MAIN class
しかし、INTRO_CLICKED イベントの Navigation クラス内にイベント リスナーを追加しているので、 (これを)追加するだけで十分だと思いましたが、これまでのところ、そのイベントをトリガーすることはできません。
アイデア、ヒント、考えはありますか?