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

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

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
По умолчанию не срабатывает событие ADDED и REMOVED

пишу:
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	//import flash.events.MouseEvent;
 
	public class WebSite extends MovieClip
	{		
		public function WebSite():void
		{
			if(stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(evt:Event = null):void
		{
                        var sprite=new Sprite();
			stage.addChild(sprite);
			sprite.addEventListener(Event.ADDED, addMoveObj);
			function addMoveObj(evt:Event):void 
			{
    			trace("added");
    			sprite.addEventListener(Event.ENTER_FRAME, added);
				trace(sprite);
			}
			sprite.addEventListener(Event.REMOVED, removeMoveObj);
			function removeMoveObj(evt:Event):void 
			{
    		        trace("removed");
    		        sprite.removeEventListener(Event.ENTER_FRAME, added);
			}
 
			function added(evt:Event):void
			{
 
			}
		}
	}
}
ничего не трэсится

Старый 02.07.2010, 18:10
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Используйте ADDED_TO_STAGE и REMOVED_FROM_STAGE. И, ради АДОБЫ, не используйте вложенные функции. Темой ранее из-за этого у человека ничего не работало.
__________________
тут я

Старый 02.07.2010, 18:25
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 3  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
у меня очень часто не получается заставить что-то работать без вложенных функций, сейчас перепишу

Добавлено через 10 минут
Цитата:
Сообщение от КорДум Посмотреть сообщение
Используйте ADDED_TO_STAGE и REMOVED_FROM_STAGE. И, ради АДОБЫ, не используйте вложенные функции. Темой ранее из-за этого у человека ничего не работало.
не принесло результатов написал, как советовали:
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
 
	public class WebSite extends MovieClip
	{
 
		private var sprite=new Sprite();
 
		public function WebSite():void
		{
			if(stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(evt:Event = null):void
		{
                        stage.addChild(sprite);
			sprite.addEventListener(Event.ADDED_TO_STAGE, addMoveObj);
			sprite.addEventListener(Event.REMOVED_FROM_STAGE, removeMoveObj);
			var moveLayers=new MoveObj(stage,layer1,layer2,layer3);
			layer1.i1.addEventListener(MouseEvent.CLICK, one);
		}
		private function addMoveObj(evt:Event):void 
		{
    		trace("added");
    		sprite.addEventListener(Event.ENTER_FRAME, added);
		}
		private function removeMoveObj(evt:Event):void 
		{
    		trace("removed");
    		sprite.removeEventListener(Event.ENTER_FRAME, added);
		}
		private function added(evt:Event):void
		{
			trace("_____________")
		}
		private function one(evt:MouseEvent):void
		{
			removeChild(sprite);
			//trace("click")
		}
	}
}


Последний раз редактировалось Dr_Bra; 02.07.2010 в 18:37.
Старый 02.07.2010, 19:19
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Показываю весь мой темповый as:
Код AS3:
package  {
	import flash.display.Sprite;
	import flash.events.Event;
 
	[SWF(backgroundColor = 0xFFFFFF, frameRate = 23, width = 550, height = 400)]
 
	/** @author KorDum **/
 
	public class Main extends Sprite {
 
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			var sprite:Sprite = new Sprite();
			sprite.addEventListener(Event.ADDED, onAdd);
			sprite.addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
			addChild(sprite);
		}
 
		private function onAdd(e:Event):void {
			trace("added");
		}
 
		private function onAddToStage(e:Event):void {
			trace("addedToStage");
		}
	}
}
Трейсятся оба трейса. Если убрать addChild - не трейсится ничего.

Добавлено через 6 минут
Быть может виноват порядок регистрирования слушателя и добавления в список отображения?
__________________
тут я

Старый 02.07.2010, 19:38
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 5  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
Код AS3:
stage.addChild(sprite);
огромное спасибо, оказалось, что эту строчку нужно было поставить ниже
Код AS3:
sprite.addEventListener(Event.ADDED, onAdd);
sprite.addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
Добавлено через 7 минут
удивительная штука, сначала "вешаются" события на переменную, а после этого нужно добавлять на сцену эту самую переменную ..

Старый 02.07.2010, 20:06
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Все логично же. Добавили, а затем поставили слушатель на добавление, когда слушать уже нечего, ибо все добавлено.
__________________
тут я

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

Теги
ADDED , REMOVED , событие

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

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


 


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


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