[AS] AS2.0 classes event handlers werken niet

Pagina: 1
Acties:

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Ik ben bezig een game te maken voor mn werk in mn beste AS 2.0, mooi met objecten werken enzo.. ik ben er niet zo'n ster in maar het gaat me tot nu toe goed af.

De volgende opzet:

Class Game.as
Class Panel.as

de Game.as genereerd vanallerlei elementen op het scherm maakt connectie met de server en als alles goed gaat met connecten creeerd ie een panel object (panel:Panel = new Panel()).

Dit panel object attached een movieclip (het eigelijke pannel, de gfx). In dit pannel wordt een knop (nu nog maar 1 want dit het probleem) geattached. Die button (geen flash component button maar een gewone flash button) heeft dan weer eventhandlers..

Het probleem zijn die eventhandlers. Ik koppel ze wel aan de button maar ik krijg geen reactie als ik op de knop klik.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class classes.Panel
{
    private var panel:MovieClip;
    private var timeTillInit:Number;
    private var intervalGameInitID:Number;
            
    function Panel()
    {
        // set panel properties     
        panel = _level0.attachMovie("playerPanel", "playerPanel", _level0.getNextHighestDepth());
        panel._x = -324;
        panel._y = -40;     
        
        panel.attachMovie("btnSelect", "btnTest", _level0.getNextHighestDepth());
        panel.btnTest._x = 150;
        panel.btnTest._y = 250;
        
        panel.btnTest.addEventListener("click", Delegate.create(this, onTestClick));            
    }
        
    private function onTestClick(event:Object):Void 
    {
        trace("HOERA!");
    }

    enz..


HOERA! komt dus niet op het scherm. Waarom niet in?? Heb het web afgesurft maar kan geen oplossing vinden.. kan hier iemand me vertellen wat er mis gaat??

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 16-01 10:51
Je kan geen eventListener attachen aan een gewone button, alleen aan de component buttons.

Flash ActionScript:
1
panel.btnTest.addEventListener("click", Delegate.create(this, onTestClick));


moet worden:

Flash ActionScript:
1
2
3
4
5
panel.btnTest.onRelease = Delegate.create(this, onTestClick);

// Of

panel.btnTest.onPress = Delegate.create(this, onTestClick);

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Dat was hem :D thx!

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Ben nu alweer een tijd lekker aan het proggen en kom nu een probleem tegen in dezelfde categorie.

chatSendButton is een movieclip.

code:
1
2
3
4
5
6
7
8
function createChatsendButton()
{
   // blalblblbblalalala code om chatsend button movie clip te createn..
   // enz enz

   // event koppelen
   this.chatSendButton.onRelease = Delegate.create(this,HandleSendButtonClick);
}


Bovenstaande code werkt prima. Het probleem is echter dat ik een gebruiker de keuze geef een andere area te joinen waardoor een deel van de movie opnieuw geladen wordt (aantal movieclips worden verwijderd en opnieuw aangemaakt (door de functies aan te roepen waar ze mee gecreate worden)). Bij de tweede keer laden werkt bovenstaande onRelease niet meer.. alle handlers die ik zo toe ken aan verschillende events stoppen met werken.. Waarom??? ik snap er niets van.. misschien dat ik de handler ongedaan moet maken ofzo? Ik heb gezocht met google maar kon niet echt iets vergelijkends vinden.

[ Voor 15% gewijzigd door tec op 24-05-2006 14:33 ]


  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Anyone??

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Na 3 dagen random dingen wijzigen aan de code kwam bedacht ik me het event onRelease te vervangen door onPress.. nu werkt het ineens wel.. ik snap er geen zak van maargoed misschien dat iemand anders er nog tegenaan loopt.
Pagina: 1