1

CreateJS で正しいフレームワーク呼び出しを見つけようとして、初めて雑草をかき分けています。Flash CC がインスタンス名を名前フィールドに適用していないように見えるという事実にかなり苦労しましたHTML5 Canvas にエクスポートします。これを行う簡単な方法はありますか?

つまり、HTML5 Canvas ドキュメントの場合

console.log( this.myItemInstanceName.name )

null を返しますが、AS3 ドキュメントの同様のコード

trace( this.myItemInstanceName.name )

文字列「myItemInstanceName」を返します。

私は多くの航空機パネルを扱っていますが、それらは通常、スイッチ、ダイヤル、または btn のタイプのコントロールの束を備えたパネルで構成されています。各コントロールの動作を実行できる関数ライブラリがあり、コントロール名に基づいて switch ステートメントを使用して panelUpdates 関数を呼び出します。これにより、スイッチを入れたときにパネルのランプを点灯させるなどのことができます。

コントロールを簡単にセットアップできますが、この名前の愚かさのために、私が望む方法で panelUpdates 関数に接続する方法がわかりません。適切なインスタンス名を入力するための良い方法を知っている人、または Adob​​e がそれを Flash CC アップデートに追加する時期を知っている人はいますか?

前もって感謝します、

エリック。

例コード:

var myPanel = this;

myPanel.mcLightSwitch.btnUp.addEventListener( "click", switchUp.bind( this ) ); // as per code snippets
myPanel.mcLightSwitch.btnDn.addEventListener( "click", switchDn.bind( this ) ); // as per code snippets

function switchUp( e ) {
     thisControl = e.target.parent;
     thisControl.gotoAndStop("btnUp");
     panelUpdates( e );
}

function switchDn( e ) {
     thisControl = e.target.parent;
     thisControl.gotoAndStop("btnDn");
     panelUpdates( e );
}

function panelUpdates( e ) {
     switch( e.target.parent.name ) {
          /* NOT WORKING BECAUSE ALL NAMES ARE NULL BY DEFAULT APPARENTLY */
          case "mcLightSwitch":
               if( e.target.name == "btnUp" ) {
                   myPanel.mcFuelLamp.gotoAndStop( "lit" );
               } else {
                   myPanel.mcFuelLamp.gotoAndStop( "unlit" );
               }
          break;
          default:
          break;
     }
}
4

2 に答える 2

0

文字列比較によるこれらの大文字と小文字の区別は、不必要にエラーが発生しやすいようです。代わりに次のようなものはどうですか:

function panelUpdates(e) {
    if (e.target.parent === myPanel.mcLightSwitch) {
        if (e.target === myPanel.mcLightSwitch.btnUp) {
            myPanel.mcFuelLamp.gotoAndStop("lit");
        }
        else {
            ...
        }
    }
    else if (e.target.parent === ...) {
        ...
    }
}
于 2014-05-07T10:32:38.447 に答える