你好,闪光的朋友们:)
我在 StackOverFlow 提出的第一个问题就是处理这个问题,我有一个数组,它创建了几个不同的按钮。但是我不知道如何为它们分配操作: 如何为每个按钮动态创建按钮操作 - 第 1 部分
感谢Joel Hooks,我能够让我的代码正常工作。然而这一次,我没有将导入的图形用作我的库中的类,而是通过绘制渐变*(不需要导入 jpg)*来创建影片剪辑。现在我又遇到了另一个可怕的“非编译时间常数”错误。我相信这与我如何尝试确定单击或翻转的按钮实例有关。
上一个按钮创建(工作)代码:
for (var i:Number=0; i < myXMLArray.length; i++) { navButton=new NavButton ; navButton.name="按钮" + i; navButton.x=i * navSIZE; navButton.y=navBtnY; navButton.buttonMode=true; thumbsMov.addChild(navButton);
按钮.push(navButton); 按钮[i].addEventListener(MouseEvent.MOUSE_UP,handleButtonClick); 按钮[i].addEventListener(MouseEvent.ROLL_OVER,handleButtonOver); 按钮[i].addEventListener(MouseEvent.ROLL_OUT,handleButtonOff); }
以前的侦听器(工作)代码:
function handleButtonOver(event:MouseEvent):void {
var button:NavButton = event.target as NavButton; var id:Number = Number(button.name.split("button") 1 ); if(button) TweenLite.to(buttonRolls[id], .4, {alpha:1, ease:Strong.easeOut}); cataText[id].defaultTextFormat = a12Green; cataText[id].text = myXMLArray[id].id; }
当前按钮创建代码:
for (var i:Number = 0; i < num; i++) {
trace("loop number = "+i);
var blueGradient:MovieClip = new MovieClip();
blueGradient.name = "button" +i;
blueGradient.graphics.beginGradientFill(bGrad, bColors, bAlphas, bRatios ,bMatrix)
blueGradient.graphics.drawRect(0, 0, 266, 40);
blueGradient.x = i * navSIZE;
blueGradient.y = navBtnY;
blueGradient.buttonMode = true;
addChild(blueGradient);
buttons.push(blueGradient)
buttons[i].addEventListener(MouseEvent.MOUSE_UP, handleButtonClick);
buttons[i].addEventListener(MouseEvent.ROLL_OVER, handleButtonOver);
buttons[i].addEventListener(MouseEvent.ROLL_OUT, handleButtonOff);
}
当前按钮侦听器代码:
function handleButtonOver(event:MouseEvent):void {
var button:blueGradient = event.target as blueGradient;
var id:Number = Number(blueGradient.name.split("button")[1]);
if(blueGradient)
cataText[id].defaultTextFormat = navFontRoll;
cataText[id].text = myArray[id].id;
}
只有在注释掉以下行时,当前电影才会正常运行:
var button:blueGradient = event.target as blueGradient;
因为这就是导致出现非编译时间常数错误的原因。但是,通过删除该行,所有按钮都是 button1,而不是动态创建的 2 个名为 button0 和 button1 的按钮。
此处的任何帮助或指示将不胜感激!提前感谢您查看我的代码。