SirHally
31.03.2011, 00:50
У меня есть приложение (Flash, AS 3) с несколькими табами. Каждый таб на отдельном Key Frame. На каждом табе есть контролы - текстовые области, кнопки и т.п. На них надо повесить обработчики событий.
Я пробовал так.
this.gotoAndStop(2);
trace(AddResource);//null
AddResource.addEventListener(MouseEvent.CLICK,AddRes);//error
Здесь AddResource - это кнопка fl.controls.Button, AddRes - функция.
Не работает, т.к. когда вызывается addEventListener AddResource еще null, не создан.
Я нашел 3 полу-решения
1. Я пробовал делать setTimeout - но его сложно подобрать, он разный будет. Да и задержка ненужная появляется.
2. Тут (http://stackoverflow.com/questions/1469984/get-movieclip-in-another-frame) предлагают поместить ВСЕ контролы на первый кадр, а ненужные сделать невидимыми. Мне это решение не нравится т.к. их тогда несколько дюжин будет на первом кадре, большая часть невидимая и как это поддерживать - непонятно.
3. Тут (http://stackoverflow.com/questions/3977465/flash-cs5-when-i-change-frames-in-a-movieclip-event-listeners-pointed-to-one-ob) советовали поместить код в Actons. Это мне тоже, честно говоря, не очень нравится - размазывать код по всем файлам проекта, хранить его не только в *.as
Как лучше решить эту проблему? Есть ли решение лучше? Или надо брать одно из этих трех?
Спасибо.
Я пробовал так.
this.gotoAndStop(2);
trace(AddResource);//null
AddResource.addEventListener(MouseEvent.CLICK,AddRes);//error
Здесь AddResource - это кнопка fl.controls.Button, AddRes - функция.
Не работает, т.к. когда вызывается addEventListener AddResource еще null, не создан.
Я нашел 3 полу-решения
1. Я пробовал делать setTimeout - но его сложно подобрать, он разный будет. Да и задержка ненужная появляется.
2. Тут (http://stackoverflow.com/questions/1469984/get-movieclip-in-another-frame) предлагают поместить ВСЕ контролы на первый кадр, а ненужные сделать невидимыми. Мне это решение не нравится т.к. их тогда несколько дюжин будет на первом кадре, большая часть невидимая и как это поддерживать - непонятно.
3. Тут (http://stackoverflow.com/questions/3977465/flash-cs5-when-i-change-frames-in-a-movieclip-event-listeners-pointed-to-one-ob) советовали поместить код в Actons. Это мне тоже, честно говоря, не очень нравится - размазывать код по всем файлам проекта, хранить его не только в *.as
Как лучше решить эту проблему? Есть ли решение лучше? Или надо брать одно из этих трех?
Спасибо.