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

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

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

Регистрация: Oct 2008
Сообщений: 52
По умолчанию Как описать несколько событий в классе??

Есть класс, который описывает пользовательские события:
Код AS3:
package com.rpg_online.private_events
{
import flash.events.*;
public class ObjectGameEvent extends Event
{
public static const CREATED:String ="created";
public var isCreate:Boolean;
 
public  function ObjectGameEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false,isCreate:Boolean=false){
super(type,bubbles,cancelable);
this.isCreate=isCreate;}
 
public override function clone():Event{
return new ObjectGameEvent(type,bubbles,cancelable,isCreate);}
 
public override function toString():String{
return formatToString("ObjectGameEvent","type","bubbles","cancelable","eventPhase","isCreate");} 
 
 
}
}
Суть такая, создается множество графических объектов в fla файле, нужно обращаться к этим объектам. Чтобы обращаться к ним, нужно быть уверенным, что до момента обращения они были созданы(т.е. существуют). Для этого я создал пользовательское событие ObjectGameEvent.CREATED
Затем читаю событие в основном классе:
Код AS3:
package com.rpg_online.mainclass
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import flash.net.*;
import flash.utils.*;
import com.rpg_online.controler.PlayerCreate;
import com.rpg_online.controler.ObstacleCreate;
import com.rpg_online.private_events.ObjectGameEvent;
 
public class Main extends MovieClip
{
private var obstacle:ObstacleCreate=new ObstacleCreate();
private var player:PlayerCreate=new PlayerCreate();
private var isCreate:Boolean;
private var numberCreated:int=0;
 
 
public function Main(){
isCreate=false;
addChildAt(player,0);
addChildAt(obstacle,0);
setChildIndex(player,0);
setChildIndex(obstacle,1);
addEventListener(ObjectGameEvent.CREATED,polyHittestedDelete);
player.poly.addEventListener(ObjectGameEvent.CREATED,objectlistiner);
obstacle.addEventListener(ObjectGameEvent.CREATED,objectlistiner);
}
 
private function objectlistiner(e:ObjectGameEvent):void{
trace("succifull created");
numberCreated++;
if(numberCreated==2){
isCreate=true;
dispatchEvent(new ObjectGameEvent(ObjectGameEvent.CREATED,true,false,isCreate));
trace("succifull all created");
}
}
 
private function polyHittestedDelete(e:ObjectGameEvent){
trace("delete this");
}
 
 
}
}
В принципе все работает за исключением одного, нужно проверить что созданы все объекты до их взаимодействия. Нужно описать событие ObjectGameEvent.ALLCREATED. Вопрос в том как описывать несколько событий в классе ObjectGameEvent??

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

Регистрация: May 2006
Сообщений: 125
добавь в ObjectGameEvent

Код AS3:
public static const ALLCREATED:String ="allcreated";
и создавай событие как-нибудь так

Код AS3:
dispatch ( new ObjectGameEvent(ObjectGameEvent.ALLCREATED));
посчитав в мейне все ли созданы или еще нет.


единственное что - "создается множество графических объектов в fla файле". это несколько странный подход к онлайну


Последний раз редактировалось ladon; 05.01.2010 в 19:29.
Старый 05.01.2010, 19:23
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 3  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
Сам разобрался -просто создать новую константу, а затем описать действие для события если нужно с помощью if(type==CREATEDALL){...} в конструкторе класса где описаны пользовательские события.

Старый 05.01.2010, 19:45
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от nickorsk Посмотреть сообщение
Сам разобрался -просто создать новую константу, а затем описать действие для события если нужно с помощью if(type==CREATEDALL){...} в конструкторе класса где описаны пользовательские события.
Классы событий логики содержать в принципе не должны.

Старый 05.01.2010, 20:31
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 5  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
>ect
Не знаю в книге вроде были какие действия для события в классе где он описан.
Хотя действия можно описать в функции Листенера.

Старый 05.01.2010, 20:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
В таком случае книгу можете выбросить.

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

Теги
событие

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

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


 


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


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