Salve gente,
sto migrando da As2 ad As3 non senza problemi.
Sto creando un tool grafico con un'area di lavoro e un menù con delle componenti da trascinare nell'area di lavoro (azione che causa la creazione di un oggetto nell'area di lavoro).
Il problema è che quando cerco di creare più oggetti trascinandoli nell'area di lavoro, il precendente viene sostituito dall'ultimo inserito e non capisco perchè. In as2 non succedeva...
Vi posto la parte di codice che non va:
L'oggetto attività appartenente alla classe Attivita.as
clipAttivita è semplicemente una clip in libreriacodice:package{ import flash.display.*; import flash.events.*; public class Attivita extends MovieClip { private var links:Array; private var posX,posY; private var indexX,indexY; private var thisClip,clipPadre; private var process:clipAttivita; static var cont = 0; // COSTRUTTORE public function Attivita(){ process = new clipAttivita(); process.x = 0; process.y = 0; addChild(process); addEventListener(Event.ADDED_TO_STAGE,creaOggetto); } private function creaOggetto(){ ....... } }
Poi sul primo fotogramma della timeline del progetto:
nella funzione _onReleaseOutside, che viene richiamata quando si rilascia il mouse nell'area di lavoro dopo il trascinamento della componente, creo più oggetti Attivita, li attacco allo stage e li inserisco nell'array. Il problema è che l'ultimo oggetto sostituisce il precendente mentre io vorrei restassero tutti nell'area di lavoro.codice:var clip:Array = new Array(); ..... // CREO LA COMPONENTE DELLA TOOL var processA:ProcessA = new ProcessA(); processA.x = 900; processA.y = 20; addChild(processA); processA.addEventListener(MouseEvent.MOUSE_DOWN,_onPress); processA.addEventListener(MouseEvent.MOUSE_OVER,_onRollOver); processA.addEventListener(MouseEvent.MOUSE_OUT,_onRollOut); function _onPress(e:MouseEvent){ trace("onPress"); } function _onRollOver(e:MouseEvent){ trace("onRollOver"); processA.gotoAndStop("rollOver"); e.target.stage.removeEventListener(MouseEvent.MOUSE_UP, _onReleaseOutside); } function _onRollOut(e:MouseEvent){ trace("onRollOut"); processA.gotoAndStop("rollOut"); if(e.buttonDown){ e.target.stage.addEventListener(MouseEvent.MOUSE_UP,_onReleaseOutside); } } function _onReleaseOutside(e:MouseEvent){ clip.push(new Attivita()); stage.addChild(clip[clip.length-1]); }
Qual'è il problema??
Una precisazione: se la funzione _onRollOutside la riscrivo così....
... sullo stage ho due oggetti.codice:function _onRollOutside(){ stage.addChild(new Attivita()); stage.addChild(new Attivita()); }

Rispondi quotando