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

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

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

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

Всем привет, помогите, плз, разобраться.
Необходимо, по событиям, загружать дополнительный класс, удалять его, затем опять загружать и т.д.
главный класс:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite
	{
		private var sprite:Sprite;
		private var anyClass;
		private var clo:Clo=new Clo;
		private var ad:Ad=new Ad;
 
		public function Main():void
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}		
		private function init (evt:Event=null)
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.addChild(clo);
			stage.addChild(ad);
			clo.x=stage.stageWidth/2-clo.width;
			clo.y=stage.stageHeight/2;
			ad.x=stage.stageWidth/2+ad.width;
			ad.y=stage.stageHeight/2;
			clo.addEventListener(MouseEvent.CLICK, cloClick);
			ad.addEventListener(MouseEvent.CLICK, adClick);
		}
		private function cloClick(evt:MouseEvent):void
		{
			trace("cloClick")
			anyClass=null;//здесь нужно удалять дополнительный класс
		}
		private function adClick(evt:MouseEvent):void
		{
			trace("adClick")
			anyClass=new AnyClass(stage);
		}
	}
}
дополнительный класс:
Код AS3:
package
{
	import flash.display.*;
	import flash.events.Event;
 
	public class AnyClass extends Sprite
	{
		public function AnyClass(stage:Stage)
		{
			trace("AnyClass загрузился")
			stage.addEventListener(Event.ENTER_FRAME, onEnFrame)
		}
		private function onEnFrame(evt:Event):void
		{
			trace("_____")
		}
	}
}
какую команду нужно написать для события cloClick, так что бы дополнительный класс удалился и перестал выполнять onEnFrame?

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
в AnyClass добавьте метод
Код AS3:
public function destruct():void
{
stage.removeEventListener(Event.ENTER_FRAME, onEnFrame);
parent.removeChild(this);
}
//и вызываейте его перед удалением объекта
anyClass.destruct();
anyClass = null;

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
Поменял код, но, наверное, не смог передать ссылку. Ожидаемого результата нет, гляньте, исправленный код:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite
	{
		private var sprite:Sprite;
		private var anyClass;
		private var clo:Clo=new Clo;
		private var ad:Ad=new Ad;
 
		public function Main():void
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}		
		private function init (evt:Event=null)
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.addChild(clo);
			stage.addChild(ad);
			clo.x=stage.stageWidth/2-clo.width;
			clo.y=stage.stageHeight/2;
			ad.x=stage.stageWidth/2+ad.width;
			ad.y=stage.stageHeight/2;
			clo.addEventListener(MouseEvent.CLICK, cloClick);
			ad.addEventListener(MouseEvent.CLICK, adClick);
		}
		private function cloClick(evt:MouseEvent):void
		{
			trace("cloClick")
			anyClass.destruct();
			anyClass = null;
		}
		private function adClick(evt:MouseEvent):void
		{
			trace("adClick")
			anyClass=new AnyClass(stage);
		}
	}
}
Код AS3:
package
{
	import flash.display.*;
	import flash.events.Event;
 
	public class AnyClass extends Sprite
	{
		public function AnyClass(stage:Stage)
		{
			trace("AnyClass загрузился")
			stage.addEventListener(Event.ENTER_FRAME, onEnFrame)
		}
		private function onEnFrame(evt:Event):void
		{
			trace("_____")
		}
		public function destruct():void
		{
			stage.removeEventListener(Event.ENTER_FRAME, onEnFrame);
			parent.removeChild(this);
		}
 
	}
}

Старый 09.07.2010, 15:49
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 4  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Вы бы почитали хотя бы чего нибудь, методом тыка будете тыкать долго.
Код AS3:
	public class AnyClass extends Sprite
	{
		public function AnyClass(stage:Stage)
		{
			this.stage = stage;
			trace("AnyClass загрузился")
			stage.addEventListener(Event.ENTER_FRAME, onEnFrame)
		}

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
Спасибо за совет, но последний ваш код, совсем не помог. Если я правильно понял, мы добавили эту строчку:
Код AS3:
this.stage = stage;

Старый 09.07.2010, 16:51
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 6  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
а, да.
Код AS3:
	public class AnyClass extends Sprite
	{
		private var stg:Stage;
 
		public function AnyClass(stg:Stage)
		{
			this.stg = stg;
			trace("AnyClass загрузился")
			stg.addEventListener(Event.ENTER_FRAME, onEnFrame)
		}
////
		public function destruct():void
		{
			stg.removeEventListener(Event.ENTER_FRAME, onEnFrame);
			parent.removeChild(this);
		}
а так? Ошибки пишут ведь, читайте, исправляйте.

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

Теги
добавление , класс , события , удаление
Опции темы
Опции просмотра

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

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


 


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


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