PDA

Volledige versie bekijken : Raar probleem bij "lege" movieClip


Blikje
%Europe/Berlin %592 %2007, 15:13
Hallo, ik probeer voor school AS3 te leren en nu ben ik tegen een raar probleempje aangelopen.

Ik probeer een tilebased 2d platform spel te maken, op het moment ben ik nog niet verder dan het genereren van een level en die laten zien met daarbij al eventuele functionaliteit voor een level editor. Ik heb een movieclip met daarin (tot nu toe) 8 blokjes van 40 bij 40 pixels, waarvan ik de eerste in eerste instantie leeg heb gelaten (een lege keyframe dus) zodat ik later een mooie achtergrond achter de "solid" tiles kan laten mee scrollen door de level.

Nu het rare probleem, ik heb eventlisteners toegevoegd zodat mijn code op een ctrl+muisclick het framenummer van de tile waar ik op click verhoogd en verlaagd met alt+muisclick. Dit werkt prima op tiles waar ik wel een afbeelding van bijvoorbeeld grond met een randje gras vanaf het begin heb ingesteld, maar frame 1 waar eigenlijk niks instaat werkt niet. Met trace heb ik al vastgesteld dat hij de code wel uitvoert maar het plaatje veranderd hij niet, dit is raar aangezien een tile die vanaf het begin als grond met gras wordt ingesteld ook naar het lege frame kan worden gezet en daarna ook weer kan worden veranderd. Het probleem doet zich dus alleen voor bij tiles die bij het maken van de level op frame 1 zijn vastgezet.

Uiteindelijk heb ik het kunnen oplossen door een vierkantje op frame 1 te zetten en de alpha daarvan op 0 te zetten, dit werkt prima maar ik blijf me afvragen hoe het bovenstaande kan gebeuren. Gaat er iets fout met mijn tile object als er een eventlistener wordt toegevoegd terwijl het frame van de betreffende movieclip leeg is ofzo?

Ik hoop dat jullie begrijpen wat ik bedoel zonder de code te zien,

Breen
%Europe/Berlin %601 %2007, 15:26
Wel, het lijkt mij dat als de eerste frame van je blokje leeg is, de width & height van die tile dan ook beide 0 gaat zijn, waardoor het onmogelijk is om erop te klikken.

Blikje
%Europe/Berlin %647 %2007, 16:32
Ok, dat is raar maar mooi om te weten. Raar vind ik dat als elke tile instantie een leeg frame als eerste frame heeft dat niet elke op 0 hoogte en 0 breedte is gezet. Ik zal ff mijn code checken of ik misschien iets met de hoogte en breedte doe van mijn tiles als ik ze toevoeg, maar als ik dat doe zou het ook op de lege tiles moeten worden toegepast.

Is er misschien een verklaring voor dat dit gebeurd? Bijvoorbeeld dat een movieClip wel op width 0 en height 0 wordt gezet na het compilen als er niks in staat terwijl dit in runtime nooit wordt gedaan?

TheDutch
%Europe/Berlin %757 %2007, 19:10
Blikje, dat is een heel normaal gevolg in Flash met MovieClips. Niets raars aan dus. De MovieClip is zo hoog en breed als wat er op het huidige frame staat. Wanneer er niets op het frame staat is de dimensie dus 0x0. Zoals Breen al aangaf is dat de oorzaak waarom je er niet op kunt klikken, aangezien er geen klik gebied is. Jouw oplossing om daar het blokje toch neer te zetten maar met alpha op '0' is een gebruikelijke :).

Blikje
%Europe/Berlin %770 %2007, 19:29
Ja, Breen zijn antwoord heeft me ook behoorlijk geholpen. Wat ik me alleen nog steeds afvraag is wat het verschil nu is met de movieClips die standaard op frame 1 worden en degene die op een ander frame worden gezet. Niet dat ik nog problemen heb maar ik wil graag weten waarom dingen nu eenmaal gebeuren, maar ik vermoed dat het iets is als:
- movieclips zonder content op de frame worden bij compile time zo groot gemaakt als de content
- movieclips die dus run-time naar een frame worden gezet waar niks opstaat gebeurd niks mee omdat resizing van movieclips die worden toegevoegd via code alleen tijdens het compilen gebeurd of het moet al door de developer ingeprogrammeerd zijn

In ieder geval bedankt voor alle antwoorden tot nu toe, ik kan weer verder naar mijn volgende probleem :P

TheDutch
%Europe/Berlin %800 %2007, 20:12
- movieclips die dus run-time naar een frame worden gezet waar niks opstaat gebeurd niks mee omdat resizing van movieclips die worden toegevoegd via code alleen tijdens het compilen gebeurd of het moet al door de developer ingeprogrammeerd zijn
MovieClips die runtime naar een frame worden gezet gebeurd precies hetzelfde mee hoor. Wanneer het huidige frame geen content heeft zal de dimensie altijd 0x0 zijn :).

Blikje
%Europe/Berlin %414 %2007, 10:56
Nou, dat is dus dan wel raar want dat gebeurde bij mij niet, ik heb 20*15 tiles op m'n scherm waarvan de meeste waren opgevuld met een tile graphic en sommige geen enkele graphic hadden en dus lucht moesten voorstellen, ik kon elke tile die begon met een graphic wel op lucht (niks dus) zetten en leuk doorgaan op ander tiles, maar uiteindelijk kon ik toch nog die tiles clicken om door de andere tile frames te gaan en kreeg daadwerkelijk een andere tile te zien op die plek :S.

Ik zal waarschijnlijk wel een of andere rare code geschreven hebben eerst die de tile alsnot op z'n oorspronkelijk grootte zet na een click maar niet na de initalisatie, mijn code werkt nu dus ik dank jullie voor de antwoorden :)