![]() |
|
||||||||||
|
|||||
|
strange mood
|
Есть первый кадр, в кадре - кнопка. Кнопка без экспорта для as но с заданным instance name.
В конструкторе класса документа: Замечательно, к кнопке есть доступ. А теперь оставляем первый кадр пустым, кнопку переносим во второй. Вот ты видишь кнопку? И я вижу. А класс не видит... Вопрос: как добраться до кнопки, если она не в первом кадре?
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Jan 2002
Адрес: asd
Сообщений: 85
|
package {
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.Event;
public class ExampleContentFrameAccess extends MovieClip {
private var _myButton:SimpleButton;
public function ExampleContentFrameAccess ( ) {
addEventListener ( Event.ADDED, onAdded );
gotoAndStop ( 2 );
}
private function onAdded ( e:Event ) :void {
if ( e.target.name == "myButton" ) {
_myButton = getChildByName ( e.target.name ) as SimpleButton;
trace ( _myButton.name ); // myButton
//removeEventListener ( Event.ADDED, onAdded );
}
}
}
}
__________________
время никого не ждёт. Последний раз редактировалось etc; 21.02.2008 в 10:45. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
GAIKER, отключите автоматическое объявление переменных ссылок на клипы в настройках AS3 в CS3. Потому как объявлять ссылки надо руками, а не оставлять это на усмотрение компилятора.
|
|
|||||
|
реально не вижу причин обращаться к объектам в кадрах, кроме как запудрить себе мозги и порешать головоломки..
хотя здесь логика простая, имхо: увидеть ты ее сможешь когда будешь на том кадре, где она есть а в конструкторе ты все равно в первом кадре, даже если скомандовал gotoAndStop(2), потому и null добавив скрипт в кадр или по любому подходящему событию все нормально видно: public class Main extends MovieClip {
public function Main() {
gotoAndStop(2);
trace("Main: " + myButton);//null
addFrameScript(1, onFrame2);
addEventListener(Event.ENTER_FRAME, doOnNextFrame);
addEventListener(MouseEvent.CLICK, onClick);
}
private function onFrame2():void {
trace("onFrame2: " + myButton);//[object SimpleButton]
}
private function onClick(e:MouseEvent):void {
trace( "clockTarget : " + e.target );//[object SimpleButton]
}
private function doOnNextFrame(e:Event):void {
trace("doOnNextFrame: " + myButton);//[object SimpleButton]
removeEventListener(Event.ENTER_FRAME, doOnNextFrame);
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|