Det er ordet "this", der giver dig problemet, this er objektet selv, og dermed ikke længere den tidslinie det stod på før (metoden attachMovie vil dog findes hvis din klasse arver fra MovieClip).
Derfor hvis du vil bruge attachMovie skal du enten arve fra MovieClip eller du skal sende en reference til et movieclip til din funktion.
"extends" betyder netop arv, dvs at din klasse ER ET MovieClip, med noget udbygget funktionalitet (MovieClip er superklassen, og din klasse er en subklasse af MovieClip). Hvis din klasse ikke er et MovieClip, men blot skal bruge et, så arver man ikke, så indeholder man blot et movieclip (det hedder en aggregering eller komposition).
Jeg mener det er sjældent at en klasse har brug for al den funktionalitet som MovieClip giver.
Håber det mindede om almindelig dansk, ellers må du spørge.
mvh mat
Synes godt om
Slettet bruger
28. januar 2007 - 17:57#2
Hej Mat - the man!
Nu spiller det.
OK, dvs. det er ingen "synd" at gøre brug af _root, når man OOP'er? for hvis man anvender "this" og "_parent", skal den vel tage udgangspunkt i et sted?
Nå, men jeg har re-kodet den problematiske del til følgende:
function opretCover(i, spacing, scenebredde, coverypos) { _root.attachMovie("cdi", "cdi"+i, i, {_x:(i*spacing-1)+(scenebredde/2), _y:150}); _root["d"+i] = new DistordImage(_root["cdi"+i].createEmptyMovieClip('test', 1), "cdnr"+i, 2, 2); }
Hvad angår extend - OK, hvis jeg har forstået det korrekt: Et MC har indbyggede standardfunktionaliteter som f.eks. _x, _xscale, hitTest osv., right? og med extend kan man så fremstille egne klasser, der gør noget helt specifikt med det pågældende movieclip?
Skal lige høre; hvordan har du lært OOP? Og kan du evt. anbefale noget materiale?
Jeg giver aldrig en reference til _root til et objekt eller klasse, jeg giver this, som tilfældigvis kan være _root.
Med extends udbygger du en eksisterende klasse, du specialiserer den. superklassen er en generalisering og subklassen en specialisering, så ja du tilføjer funktionalitet (eller overskriver gældende).
Jeg har lært det gennem min uddannelse (både generel OO analyse og design, og programmeringsfag med OO sprog). Jeg ved ikke rigtigt hvilken litteratur jeg ville anbefale, hvis det skal eksemplificeres i ActionScript, jeg har kun læst Moocks essential AS 2. Men det meste litteratur om OO er vel ok?
Når jeg skriver "reference" så mener jeg følgende;
Forestil dig at du i din fla skriver således i _root;
var some_object:SomeClass = new SomeClass(this);
Så er this en reference til _root, din klasse vil så holde på denne reference med;
class SomeClass {
private var _timeline:MovieClip;
public function SomeClass ( timeline:MovieClip ) { _timeline = timeline; }
}
Så kan du i din klasse bruge _timeline som det movieclip du attacher til, og så har du ikke nogen decideret _root reference i din klasse (den kan jo snildt ændres hvis du er bange for konflikter).
mvh mat
Synes godt om
Ny brugerNybegynder
Din løsning...
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.