我第一次在杂草中挣扎,试图在 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;
}
}