Archief - Movieclips in flash, gebruiken in flash builder(flex)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

profound

Legacy Member
Ik heb een project in flex, en ik gebruik daarin movielcips die ik in flash aanmaak. Het gehele project is code-based, aangezien ik niet graag werk met die omslachtige timeline.
Ik wil nu die movielcips gaan gebruiken in flex. Ik heb een paar maand geleden een gelijkaardig project gemaakt, en heb dit toen ook gedaan, maar ik weet niet goed meer hoe ik dit heb gedaan, en het lukt mij dus niet meer....

Hoe ga ik te werk?
Ik maak in flash een mc aan, linkage geef ik een relevante naam (nu, ObjHolder).
In flex heb ik een package genaamd 'objects', waar ik dus een class aanmaak voor iedere mc dat ik wil implementeren, deze class noemt objHolder.
Dus ik maak een nieuwe class aan, met de volgende code:

Code:
package com.view.objects
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	
	public class objHolder extends ObjHolder
	{
		public function objHolder()
		{
			super();
		}
	}
}

Uiteraard wordt deze code dan nog uitgebreid.
In mijn 'Main.as' importeer ik dan de gehele package van objects, zodat ik deze kan gebruiken.
Maar, dit lukt dus niet (meer...).
Iemand die weet wat ik verkeerd doe?

Bedankt alvast!!

Zero Grav

Legacy Member
Ge moet een SWC aanmaken met uw objecten in en importeren in uw Flash Builder Project.

1. Flash Professional > Publish settings > Flash > Export SWC
2. Flash Builder > maak in uw actionscript project een libs folder aan en zet die SWC erin.
3. Rechtermuisklik op uw projectnaam > Properties > Flex Library Build Path > Library Path tab > "Add SWC Folder". Als ge de map juist hebt gezet zoudt ge gewoon "libs" moeten invoeren.
4. Win!

Daarna zijn alle objecten die ge als "Export for Actionscript" hebt aangevinkt in Flash beschikbaar in uw SWC. Ge kunt geloof ik ook enkel en alleen een SWC aanmaken als ge minstens één object hebt dat ge exporteert.

profound

Legacy Member
Aha, ik was vergeten publishen, blijkbaar moet je elke keer wanneer je iets nieuws toevoegt in flash publishen, en niet gewoon saven.
Bedankt alvast!

Ik had nog een vraag.
Ik heb een mc objHolder, en in flash zet ik daar in nog een mc, die ObjRemove noemt, die dient als button om de holder van de stage te verwijderen. Ik vroeg mij af hoe ik die mc in een mc aanroep? En hoe ik er dan voor zorg dat die holder van de stage verwijdert wordt. In mijn code heb ik een class (objHolder, die dan overerft van ObjHolder), ik heb al vanalles geprobeerd, maar niets lijkt te lukken, iemand een idee?

profound

Legacy Member
Bedankt, dat is wat ik naar zocht! :D
Ik heb de closebutton de instantienaam 'close' gegeven.
Maar ik zit nu wel met een probleem. Jij doet alles direct in je main, ik heb voor die holder een aparte class, dus ik wil die close daar dan ook volledig definiëren enzo. Ik moet dan ook geen instantie nemen (zoals jij hldr hebt), dus iets als removeChild(hldr) kan ik niet doen aangezien ik er nergens een instantie van neem. ik dacht aan removeChild(this), maar dan krijg ik een error.
Ik hoop dat het wat duidelijk is, ik zal de classcode eens posten
Code:
package com.view.objects
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	
	public class objHolder extends ObjHolder
	{	
		public function objHolder()
		{
			super();
			close.addEventListener(MouseEvent.CLICK, handleCLoseClicked);
			close.buttonMode = true;
		}
		
		public function handleCLoseClicked(e:MouseEvent):void{
			trace("dicht");
			removeChild(this);
		}
	}
}

Zoals je ziet moet ik niet hldr.close. .... doen, maar kan ik direct de close aanspreken. De trace werkt, maar ik weet niet hoe ik verder moet.
Nog ideeën toevallig? :)

Huxley

Legacy Member
Een event dispatchen in je handleCLoseClicked?

Code:
dispatchEvent(new Event(Event.CHANGE));

Dit is toch ook wel onlogisch:

Code:
public class objHolder extends ObjHolder

Klassen beginnen trouwens altijd met een hoofdletter.

profound

Legacy Member
Het lukt maar niet.....
In de functie handleCLoseClicked heb ik: dispatchEvent(new Event("CLOSED_CLICKED"));
Dan heb ik in mijn main een instantie van objHolder gemaakt, en heb ik dus: holder.close.addEventListener("CLOSED_CLICKED", getRidOfChild);
En getRidOfChild is de functie die ik wil uitvoeren.
Dit is mijn structuur
http://img821.imageshack.us/img821/5041/structure.png

Het is de eerste keer dat ik in flash volledig een website codeer, het is zelfs da eerste keer dat ik deftig met flash, flex en AS3.0 werk, vandaar de soms wat vreemde vragen :$
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan