Flash CC HTML5 Canvas:实例名称为null。如何解决这个问题?

时间:2014-04-25 18:32:02

标签: flash createjs flash-cc

我第一次打破杂草,试图找出CreateJS中正确的框架调用,并且我很难搁浅Flash CC似乎没有将实例名称应用于导出到HTML5 Canvas时的名称字段。有一个简单的方法吗?

我的意思是,对于HTML5 Canvas文档

console.log( this.myItemInstanceName.name )

返回null,而AS3文档中的类似代码

trace( this.myItemInstanceName.name )

返回字符串“myItemInstanceName”。

我做了很多飞机面板,通常由一个带有一系列开关,拨盘或btn控制器的面板组成。我有一个函数库,允许我执行每个控件的行为,然后它使用基于控件名称的switch语句调用panelUpdates函数。这让我可以做一些事情,比如在开关打开的情况下点亮面板上的灯。

我可以轻松设置控件,但由于名称的这种愚蠢,我无法按照自己喜欢的方式看到连接panelUpdates函数的方法。任何人都有一个很好的方法来填充正确的实例名称或知道什么时候Adobe会将它添加到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;
     }
}

2 个答案:

答案 0 :(得分: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 === ...) {
        ...
    }
}

答案 1 :(得分:0)

我也遇到了同样的问题而且很烦人。 但我通过手动设置名称然后使用它来解决。

例如:

this.myItemInstanceName.name = "myItem";
if (this.myItemInstanceName.name == "myItem")

现在我知道我可以直接与上面提到的对象进行比较。 :)