Привет снова, ребята, флешеры :)
Мой первый вопрос, заданный здесь, в StackOverFlow, касался этой проблемы, у меня был массив, который создавал несколько разных кнопок. Однако я не знал, как назначать им действия: Как дать динамически создаваемым кнопкам действия для каждой - часть 1
Благодаря Джоэлу Хуксу мне удалось заставить свой код работать. Однако на этот раз вместо того, чтобы использовать импортированную графику в качестве класса из моей библиотеки, я вместо этого создаю movieClip, рисуя градиент * (не нужно импортировать jpg) *. Теперь я снова получаю ужасную ошибку "не компилируется постоянная времени". Я считаю, что это как-то связано с тем, как я пытаюсь определить экземпляр кнопки, который был нажат или свернут.
Код создания (работает) предыдущей кнопки:
for (var i: Number = 0; i ‹myXMLArray.length; i ++) {navButton = new NavButton; navButton.name = "кнопка" + я; 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: NavButton = event.target как NavButton; var id: Number = Number (button.name.split ("button") 1); if (кнопка) TweenLite.to (buttonRolls [id], .4, {альфа: 1, легкость: 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, а не две динамически создаваемые кнопки с именами button0 и button1.
Любая помощь или указатели здесь были бы весьма признательны! Заранее спасибо за то, что взглянули на мой код.