Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как описать несколько событий в классе?? (http://www.flasher.ru/forum/showthread.php?t=134594)

nickorsk 05.01.2010 18:24

Как описать несколько событий в классе??
 
Есть класс, который описывает пользовательские события:
Код 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??

ladon 05.01.2010 19:23

добавь в ObjectGameEvent

Код AS3:

public static const ALLCREATED:String ="allcreated";

и создавай событие как-нибудь так

Код AS3:

dispatch ( new ObjectGameEvent(ObjectGameEvent.ALLCREATED));

посчитав в мейне все ли созданы или еще нет.


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

nickorsk 05.01.2010 19:23

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

etc 05.01.2010 19:45

Цитата:

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

Классы событий логики содержать в принципе не должны.

nickorsk 05.01.2010 20:31

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

etc 05.01.2010 20:32

В таком случае книгу можете выбросить.


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

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