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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2009, 12:52
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 1  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
По умолчанию Инициализация компонента на таймлайн

Есть мувклип с несколькими ключевыми кадрами.Этот мувклип связан с классом.В первом кадре клипа стоит stop().Во втором лежит стандартный компонент.Его надо проинициализировать,повесить обработчики.После появления клипа на сцене и переходу к кадру с клипом.Обработчики компонента не работают.Если этот компонент положить в первый кадр - все нормально.Т.е. проблема в том что компонент нельзя проинициализировать если он лежит не в первом кадре.Как обойти проблему?

Старый 19.03.2009, 12:57
ladon вне форума Посмотреть профиль Отправить личное сообщение для ladon Найти все сообщения от ladon
  № 2  
Ответить с цитированием
ladon

Регистрация: May 2006
Сообщений: 125
Может положить компонент на первый кадр, но например под маску или за пределы отображаемой области и проинициализировать как надо, а на втором кадре убрать маску или выставить правильные координаты?

Старый 19.03.2009, 13:00
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 3  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Это выход,но не удобно при дизайне.Компонент перекрывает остальные элементы из 1-го кадра.Должен быть какой то програмный способ .Я забыл как это делается.Давно флеш брал в руки

Старый 19.03.2009, 15:27
Arif flasher вне форума Посмотреть профиль Отправить личное сообщение для Arif flasher Посетить домашнюю страницу Arif flasher Найти все сообщения от Arif flasher
  № 4  
Ответить с цитированием
Arif flasher
 
Аватар для Arif flasher

Регистрация: Mar 2009
Адрес: Баку, город ветров
Сообщений: 51
Отправить сообщение для Arif flasher с помощью ICQ Отправить сообщение для Arif flasher с помощью MSN Отправить сообщение для Arif flasher с помощью Skype™
Цитата:
Сообщение от Anddrey Посмотреть сообщение
Это выход,но не удобно при дизайне.Компонент перекрывает остальные элементы из 1-го кадра.Должен быть какой то програмный способ .Я забыл как это делается.Давно флеш брал в руки
можно их visible сделать фалс а визибл компонента тру. На каждый кейфрейм своя функция, ты не сможешь написать функцию на первом кадре для обьекта который находится на втором.
__________________
Учусь флэшу с 01.01.2009
Status: Beginner

Старый 19.03.2009, 13:08
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 5  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
можно использовать событие
Код AS3:
addEventListener(Event.ADDED, eventComponentAdded);
оно будет срабатывать каждый раз, когда произошло изменение кадра и содержимое добавлено.
еще вариант, делать во втором кадре dispatchEvent своего события, например COMPONENT_ADDED, в классе подписаться на это событие и определить функцию, которая будет инициализировать компонент

Старый 19.03.2009, 13:19
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 6  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Интересно получается Если в класс отвечающий за мувклип добавить обработку Event.ADDED то события компонента из 2-го кадра отрабатываются но при этом возникает ошибка:TypeError: Error #1009: Cannot access a property or method of a null object reference. !!!

Добавлено через 3 минуты
Вообще это как то не "по людски".Если компонент находится в мувклипе то почему его нельзя проинициализировать если он не в первом кадре?Ведь когда мы кладем его из библиотеки на сцену то этим мы говорим системе(флешу) о присутствие экземпляра.Почему тогда его нельзя инициализировать?

Старый 19.03.2009, 13:38
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 7  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
считайте, что компонент во втором кадре - как локальная переменная в функции - пока вы не вызовете функцию - этой переменной не существует, и после того, как функция выполнится - локальная переменная перестанет существовать, так и с таймлайном.
Ошибка возникает в следствии того, что во втором кадре у вас кроме компонента есть еще какие-то элементы - обработчик срабатывает для них всех, вам нужно через e.target определить, что добавляемый элемент - именно ваш компонент

Старый 19.03.2009, 14:03
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 8  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Выходит что добраться до компонента из 2-го кадра при текущем первой никак нельзя пока этот компонент не отобразиться на сцене,так?Может есть какой то способ получения ссылки на него не отображая 2-й кадр?

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

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Цитата:
Если компонент находится в мувклипе то почему его нельзя проинициализировать если он не в первом кадре?
Это всё в вашем воображении

На самом деле компонент появляется в мувиклипе в тот момент, когда мувиклип переходит на кадр с этим компонентом - без этого вы до него никак не достучитесь.
__________________
тонкий тролль, осеянный благодатью

Старый 19.03.2009, 14:46
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 10  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Цитата:
Сообщение от GAIKER Посмотреть сообщение
Это всё в вашем воображении

На самом деле компонент появляется в мувиклипе в тот момент, когда мувиклип переходит на кадр с этим компонентом - без этого вы до него никак не достучитесь.
Так я об этом и говорю, но флеш то знает что экземпляр компонента лежит во 2-м кадре.Если флеш знает то должен быть код который позволяет получить на него ссылку

Добавлено через 33 минуты
Вот код на скорую руку:
1-й кадр две кнопки (b_1,b2)+stop() на кадре
2-й кадр два компонента(comp,res)
Код AS3:
package 
{
import flash.display.MovieClip;
import flash.display.SimpleButton;
import fl.controls.Label;
import fl.controls.NumericStepper;
 
import flash.events.Event;
import flash.events.MouseEvent;
 
public class  Comp_2 extends MovieClip  {	
	 public function  Comp_2() {	
		 initEvents();
		 //initParams();
	 }	
	 protected  function initEvents() {
		 b_1.addEventListener(MouseEvent.CLICK,onClickB1);
		 b_2.addEventListener(MouseEvent.CLICK,onClickB2);
		 addEventListener(Event.ADDED, eventComponentAdded);
	 }
	 private function eventComponentAdded(e:Event) {
		trace("eventComponentAdded="+e.target.name);
		if (e.target.name=="cmp") {initParams();} 
	 }
    protected  function initParams() {
		 cmp.addEventListener(Event.CHANGE, onChangeCmp);
	}
	protected function onClickB1(e:Event):void {
		gotoAndStop(1);
    }
	protected function onClickB2(e:Event):void {
		gotoAndStop(2);
    }
	protected function onChangeCmp(e:Event):void {
		res.text="Результат работы компонента:"+cmp.value;
    }
}
}
Где нужно вызвать initParams что бы срабатывал метод onChangeCmp -вот в чем вопрос

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

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

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


 


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


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