24. november 2006 - 23:29Der er
7 kommentarer og 1 løsning
onEnterFrame på et movieclip fra en klasseinstans
Hej eksperter!
Jeg er ved at lave et lille spil, hvor man styrer et fly rundt på skærmen. Så skal der skydes fjender ned...
Jeg har en klasse der omfatter alle typer skud (kaldet PROJECTILE). Så opretter jeg enkelte skud ud fra den med forskellige egenskaber.
Og her er det gode: Det ser faktisk ud til, jeg ikke er stødt ind i nogen seriøse problemer (endnu)!
Men: Når der oprettes et skud, skal den klasseinstans så indsætte en instans at et movieclip som grafik i et andet movieclip (alle skud indsættes sandsynligvis i det samme). Hvad gør jeg så, når jeg vil have dette nye movieclip til at udføre en funktion defineret i klassen, hvis instans lavede mc'et, på hver onEnterFrame? Jeg kan vel ikke prøge onEnterFrame på klasseinstansen selv? Men hvad så med movieclippet? Jeg har prøvet, men så udføres funktionen kun en gang...
AI er på vej ind i danske kontaktcentre, men uklare mål, tunge processer og et opsplittet systemlandskab spænder mange steder ben for resultaterne.
Slettet bruger
24. november 2006 - 23:31#1
Ups, det blev relativt uforståeligt. Altså:
Instans at PROJECTILE oprettes Denne instans laver et MC Dette MC skal på hver onEnterFrame udføre en funktion (der befinder sig i klasseinstansen der lavede MC'et)
var clip = some_timeline.attachMovie(params); clip.onEnterFrame = function() { yadayada }
(men jeg tror jeg ville lave een onEnterFrame som et "game loop", der sørger for at opdatere de objekter der skal opdateres i hver frame).
mvh mat
Synes godt om
Slettet bruger
25. november 2006 - 12:32#4
Ja, men hvad hvis det er en specifik funktion? var clip = some_timeline.attachMovie(params); clip.onEnterFrame = myfunc(); } ? Det virker ikke. Så gør den det kun 1 gang...
Problemet er scope, når du laver eventhandlers til movieclips (og knapper) i en klasse. Scope ændres til clippet istedet for klassens. Du kan bruge Delegate til at få rette scope.
import mx.utils.Delegate;
class Test { private var _mc:MovieClip; public function Test(timeline:MovieClip) { _mc = timeline.attachMovie("linkage", "nc", 1, {_x:100, _y:100}); _mc.onEnterFrame = Delegate.create(this, moveMc); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.