ActionScript 3 - Hvor blev attachMovie af?

Er i øjeblikket igang med mit første rene AS3 projekt, og derfor dukker der jævnligt småproblemer op, da der er lavet særdeles meget om i forhold til ActionScript 2.

Hertil aften havde jeg lavet et movieclip i mit library som jeg ville tilføje til min stage, i AS2 gøres det således:

this.attachMovie("libraryNavn", "navnPaaStage", this.getNextHighestDepth());

Men, jeg kunne simpelthen ikke lure hvordan man gjorde det samme i AS3 - nu har jeg dog fundet ud af det, og det er som så meget andet, når først man ved det, så er det særdeles ligetil.

Hvor man i AS2 gav sit objekt i librariet et identifier navn, så skal man nu give det et klassenavn, samt vælge hvilken baseclass det skal nedarve fra, i mit tilfælde et MovieClip.

Lad os sige at jeg har givet det klassenavnet Question, når det så herefter skal tilføjes til stagen gøres det som følger:

var mit_mc:Question = new Question();
addChild(mit_mc);

Det er skisme simpelt og logisk - når først man lige ved det ;-)



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

10 kommentarer

  1. Lars Nørgaard siger: (24. oktober 2007 kl. 23:06 )

    Hvor jeg dog ville ønske jeg kunne finde ud af flash :)

    Vi havde i dag besøg, af en der til dagligt arbejder med flash (ligesom dig) :)

    Han fortalte lidt om hvad de laver og viste et par eksempeler.

    Så må sige, at Flash begynder at give mig en smugle blod på tanden, bl.a. efter at jeg fandt ud af, at den slet ikke er så dårligt til SEO når det bare gøres rigtigt :)

  2. Mads Buch Stage siger: (25. oktober 2007 kl. 10:13 )

    Ja, Flash er et fantastisk værktøj, ingen tvivl om det.

    Ang. SEO’en, så er Flash jo stadigvæk elendig til det - men til gengæld er der kommet en række hjælpemidler der gør at man kan afhjælpe problemet.

    Ordkløveri, I know ;-)

  3. Lars Nørgaard siger: (25. oktober 2007 kl. 13:44 )

    Det blev lidt sent da jeg skrev ;)

    Men bliv endelig ved med dine fine indlæg, selvom jeg måske ville ønske du beskrev hvad de forskellige ting gør :)

  4. Steven siger: (25. oktober 2007 kl. 14:37 )

    Lækkert at vide, men hvad gør man hvis man eks. vil sætte flere af samme movieclip ind? Det kunne være man henter antal ind via XML, og så linker et billede gennem XML til det movieclip man sætter på scenen.

    Normal ville man gøre følgende: this.attachMovie(”libraryNavn”, “navn” + i, this.getNextHighestDepth());

    hvor i jo er indikator for hvor langt man er i sin “for” loop, og derved giver hvert movieclip navnet, “navn” + i som eks kunne være navn0 og det næste movieclip så navn1 osv osv.

  5. Mads Buch Stage siger: (25. oktober 2007 kl. 19:53 )

    Hej Steven,

    Det er super nemt, du gør bare sådan her:
    this[”navn” + i] = new Question();

    /Mads

  6. felisan siger: (30. oktober 2007 kl. 10:17 )

    hey Mads.

    nice tip - troede faktisk, at man skulle lave en class først, for at det kunne lykkedes.
    i dit tilfælde, er class’en Question bare en slags pseudoclass, eller hvordan hænger det sammen?

  7. Mads Buch Stage siger: (30. oktober 2007 kl. 11:33 )

    Ja, det er det - har intet andet gjort end at oprette et movieclip, helt uden kode i øvrigt, og give det et Identifier navn i librariet.

  8. Jamal Soueidan siger: (31. oktober 2007 kl. 19:52 )

    Udover at du kan oprette movieclip ved brug af new Something();

    Så kan du i klassen Something oprette metoder og variabler til klassen, så movieclipen får ekstra funktionaliter :D

    ActionScript 3 er SUPER! og nemt at lær end AS2!

  9. Newbie siger: (5. september 2008 kl. 17:08 )

    Ja, nu spørger jeg så måske dumt…

    Jeg har 5 mc’er i mit library (d1_mc-d5_mc) som jeg dynamisk vil add’e til scenen. Skal jeg så gøre flg:

    var element1:d1_mc = new d1_mc();
    addChild(element1);
    var element2:d2_mc = new d2_mc();
    addChild(element2);
    var element3:d3_mc = new d3_mc();
    addChild(element3);
    var element4:d4_mc = new d4_mc();
    addChild(element4);
    var element5:d5_mc = new d5_mc();
    addChild(element5);

    og hvordan skal det skrives i et for loop?

  10. Mads ny siger: (30. september 2008 kl. 23:10 )

    Hej Newbie og i andre, det jeg tror i leder efter er dette:

    **** MAGIC REPLACEMENT OF EVAL()****
    var ClassReference:Class = getDefinitionByName(”NAME”+i) as Class;
    var instance:Object = new ClassReference();
    MC.addChild(instance);
    *****************************************

    arbejder du med classes skal du lige huske at import flash.utils.*;
    Det er lidt mere omstændigt end vores gamle eval() funktion i AS2 men det virker :D .
    hvis du vil lave et galleri af en eller anden art, så husk evt lidt at MC.removeChildAt(0) så dit program ikke fylder rammen med ens fotos :D .
    Happy AS3 Codin

Skriv en kommentar