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

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

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

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
Код AS3:
package{
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class RandCircle extends Sprite{
		private var timer:Timer=new Timer(100);
		private var circle:Circle;
 
		public function RandCircle(){
			timer.addEventListener(TimerEvent.TIMER,onTimer);
			circle.addEventListener(circle.REMOVE_ME,onRemoveChild);
			timer.start();
		}
 
		private function onTimer(e:TimerEvent):void{
			circle=new Circle;
			addChild(circle);
			trace(this.numChildren);
		}
 
		private function onRemoveChild(e:Event):void{
			removeChild(Circle(e.target));
		}
 
 
	}
 
}

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
package {
	import flash.events.Event;
 
	public class MyEvent extends Event {
 
		public function MyEvent(type:String) {
			super(type);
		} 
 
 
		public override function clone():Event { 
			return new MyEvent(type);
		}
	}
}
Минимальный класс кастомного ивента.

Добавлено через 38 секунд
Зачем вы два раза выложили свой неверный код?
__________________
тут я

Старый 02.06.2011, 22:21
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 13  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
Я изменил, но там возникла уже другая ошибка. В вашем случае надо создавать новый класс под событие..?

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

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

Старый 02.06.2011, 22:23
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 15  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
C:\Users\Slava\Desktop\RandCircle.as, Line 16 1119: Access of possibly undefined property REMOVE_ME through a reference with static type Class.

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

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

Добавлено через 3 минуты
Код AS3:
public static const REMOVE_ME:String = "removeMe";
Если у вас вдруг ничего не получилось.
__________________
тут я

Старый 02.06.2011, 22:30
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 17  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
Код AS3:
package {
	import flash.events.Event;
 
	public class MyEvent extends Event{
		public const REMOVE_ME="REMOVE_ME";
 
		public function MyEvent(type:String) {
			super(type);
		} 
 
		public override function clone():Event { 
			return new MyEvent(type);
		}
	}
}
Где ее написать? Так не работает...

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
static. И где типизация?

Добавлено через 2 минуты
А вообще можно бы было не париться и диспатчить/ловить Event.COMPLETE. Для данного случая не принципиально.
__________________
тут я

Старый 02.06.2011, 22:35
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 19  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
Вот 3 мои класса.

RandCircle.as
Код AS3:
package{
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.display.Sprite;
 
	public class RandCircle extends Sprite{
		private var timer:Timer=new Timer(100);
		const REMOVE_ME="REMOVE_ME";
 
		public function RandCircle(){
			timer.addEventListener(TimerEvent.TIMER, onTimer);
			timer.start();
		}
 
		private function onTimer(e:TimerEvent):void{
			var circle:Circle = new Circle();
			circle.addEventListener(MyEvent.REMOVE_ME,onRemoveChild);
			addChild(circle);
			trace(this.numChildren);
		}
 
		private function onRemoveChild(e:MyEvent):void {
			removeChild(Circle(e.target));
		} 
	}
}
Circle.as
Код AS3:
package{
	import flash.display.Sprite;
	import flash.utils.Timer;
	import flash.events.*;
 
	public class Circle extends Sprite{
		const REMOVE_ME="REMOVE_ME";
		private var timer:Timer=new Timer(150,0);
		private var randX:Number=Math.random()*550;
		private var randY:Number=Math.random()*400;
		private var randR:Number=Math.random()*75+20;
 
		public function Circle(){
			drawThis();
			timer.addEventListener(TimerEvent.TIMER,onTimer);
			timer.start();
		}
 
		private function drawThis():void{
			graphics.lineStyle(1,0x000000,1);
			graphics.beginFill(0xFFCC99,1);
			graphics.drawCircle(randX,randY,randR);
		}
 
		private function onTimer(e:TimerEvent):void{
			this.alpha -= 0.1;
			dispatchEvent(REMOVE_ME);
		}
 
 
	}
}
MyEvent.as
Код AS3:
package {
	import flash.events.Event;
 
	public class MyEvent extends Event{
		public static var REMOVE_ME:String="REMOVE_ME";
 
		public function MyEvent(type:String) {
			super(type);
		} 
 
		public override function clone():Event { 
			return new MyEvent(type);
		}
	}
}
Возникает одна лишь ошибка:
TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать "REMOVE_ME" в flash.events.Event.

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вы бы хоть документацию открыли, а не методом тыка все попробовали.
Код AS3:
dispatchEvent(new MyEvent(MyEvent.REMOVE_ME));
Добавлено через 2 минуты
Код AS3:
const REMOVE_ME="REMOVE_ME";
Зачем это везде понапихали? Вам бы Мука почитать, его главу про событийную модель.
__________________
тут я

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

Теги
circle , timer , Таймер , Шар
Опции темы
Опции просмотра

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

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


 


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


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