Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.02.2008, 03:05
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 1  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Arrow Доступность дочерних объектов

Есть первый кадр, в кадре - кнопка. Кнопка без экспорта для as но с заданным instance name.
В конструкторе класса документа:
Код:
trace(this.myButton); //трейсит
Замечательно, к кнопке есть доступ.

А теперь оставляем первый кадр пустым, кнопку переносим во второй.
Код:
this.gotoAndStop(2);
trace(this.myButton); //null
Вот ты видишь кнопку? И я вижу. А класс не видит...

Вопрос: как добраться до кнопки, если она не в первом кадре?
__________________
тонкий тролль, осеянный благодатью

Старый 21.02.2008, 05:13
sultan_M вне форума Посмотреть профиль Отправить личное сообщение для sultan_M Найти все сообщения от sultan_M
  № 2  
Ответить с цитированием
sultan_M

Регистрация: 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 );
	}
        }
    }
}
или

Код:
....
addEventListener ( Event.ENTER_FRAME , onAdded );
....
private function onAdded ( e:Event ) :void {
	if ( currentFrame == 2 ) {
		_myButton = getChildByName ("myButton") as SimpleButton;
		trace ( _myButton.name ); // myButton
		removeEventListener ( Event.ENTER_FRAME, onAdded );
         }
}
__________________
время никого не ждёт.


Последний раз редактировалось etc; 21.02.2008 в 10:45.
Старый 21.02.2008, 10:48
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
GAIKER, отключите автоматическое объявление переменных ссылок на клипы в настройках AS3 в CS3. Потому как объявлять ссылки надо руками, а не оставлять это на усмотрение компилятора.

Старый 21.02.2008, 12:32
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
реально не вижу причин обращаться к объектам в кадрах, кроме как запудрить себе мозги и порешать головоломки..
хотя здесь логика простая, имхо:
увидеть ты ее сможешь когда будешь на том кадре, где она есть
а в конструкторе ты все равно в первом кадре, даже если скомандовал 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);
		}
		
	}

Старый 21.02.2008, 15:09
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Всем большое спасибо!
__________________
тонкий тролль, осеянный благодатью

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.