PDA

Volledige versie bekijken : Flexproject vs Actionscriptproject


Loekasjenko
%Europe/Berlin %157 %2007, 03:46
Hallo theDutch,

Afgelopen week hielp je me met de SWFLoader. Omdat ik in Flexbuilder2 een actionscriptproject had aangemaakt in het begin, en niet een flexproject, was de class SWFLoader niet beschikbaar. :O Die heb ik nodig, dus maak ik er een flexproject van.

Nu heb ik dus een flexproject aangemaakt, dat betekend dus volgens mij dat de default application vanuit een MXML-bestand start. Aangezien ik liever in AS3 werk zou ik het liefst hebben dat ik mijn AS3-classes vanuit de MXML-file geladen worden, en dat ik verder geen **** meer te doen heb met die MXML. Ik neem aan dat het niet mogelijk is een flexproject te hebben die direct in een AS3 bestand begint?

Als je een actionscriptproject start, dan weet je dat je je default application Class moet extenden met Sprite. Ik kan dan in die Class een child add'en aan de stage, wat er voor zorgt dat die betreffende child zichtbaar wordt omdat hij op de displayList word geplaatst.
In mijn MXML-bestand kan ik de stage niet vinden en daarom kan ik ook niks zichtbaars op mijn stage tonen. Kun je me vertellen hoe ik het voor elkaar krijg om vanuit mijn MXML-bestand m'n AS3 Game class aan te roepen (die dan weer alle andere classes aanroept) en in die Game class sprites te add'en?

Mijn MXML-bestand ziet er nu zo uit:



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init(event)">
<mx:Script>
<![CDATA[
import flash.display.Sprite;
public var __Game:Object;
public function init(e:Event):void {
__Game = new Game();
}
]]>
</mx:Script>
</mx:Application>



En m'n as3 Game class ziet er zo uit:



package {
import flash.display.Sprite;

public class Game extends Sprite
{
public function Game() {
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000, 100);
sprite.graphics.drawRect(0,0,100,200);
sprite.graphics.endFill();
stage.addChild(sprite);
}
}
}






Bedankt,
Lukas

TheDutch
%Europe/Berlin %319 %2007, 07:40
Probleem wat jij nu hebt is dat je bij een Flex Project gebruik maakt van het Flex Framework en je ook volgens dat framework moet werken. Wanneer je het framework nog niet zo goed kent, liever puur met ActionScript 3 werkt zonder het framework, of gewoon het framework helemaal niet nodig hebt voor het project dan is het ActionScript Project toch beter voor je.

Ik bedacht me daarnet iets; er is toch ook wel een MovieClipLoader.loadClip() variant in ActionScript 3? Natuurlijk is die er! De class: flash.display.Loader (http://livedocs.macromedia.com/flex/2/langref/flash/display/Loader.html). Daarmee kan je net zo makkelijk SWFs inladen en via de "content" property de SWF stage bereiken.

Je kunt dus weer terug naar een ActionScript Project, zoals je dat zo graag wilt :).

Loekasjenko
%Europe/Berlin %741 %2007, 17:48
Okee, ja dan maar weer terug he, lol :)

Waldo
%Europe/Berlin %939 %2007, 22:32
Trouwens, als je niet met MXML wilt werken kan je een CustomApplication.as class maken die Application extend, dan kan je daarna gewoon lekker in je class hacken zonder verder gebruik van MXML ;-)

TheDutch
%Europe/Berlin %136 %2007, 03:15
Yups, alleen is het dan wel goed om te weten dat je dan volgensmij wel volgens het Flex Framework moet werken en niet zomaar zoals in bij een ActionScript Project dingen als sprites op een stage kunt zetten zonder gebruik te maken van Flex Components :).

Waldo
%Europe/Berlin %457 %2007, 10:59
Yep dat is correct, je objecten moeten UIComponent extenden ja