ïðîáëåìà ñ removeChild â ìàññèâå - Flash Zone Forum

IPB

Çäðàâñòâóéòå, ãîñòü ( Âõîä | Ðåãèñòðàöèÿ )

 
Îòâåòèòü â ýòó òåìóÎòêðûòü íîâóþ òåìó
> ïðîáëåìà ñ removeChild â ìàññèâå
reQuiem
ñîîáùåíèå 21.08.2011 - 13:41
Ñîîáùåíèå #1


Íîâè÷îê
*

Ãðóïïà: Íîâè÷îê
Ñîîáùåíèé: 1
Ðåãèñòðàöèÿ: 21.08.2011
Ïîëüçîâàòåëü ¹: 10633



Ïðèâåò! ß íåäàâíî íà÷àë èçó÷àòü AS3 è â ðåàëèçàöèè ñâîåé ïåðâîãî áîëåå ìåíåå ñåðüåçíîé çàäóìêè ñòîëêíóëñÿ ñ ïðîáëåìîé.
Ïðîåêò - èãðà, ñêðîëëøóòåð. Ïðè êëèêå ðîæäàåòñÿ îáúåêò "Ïóëÿ" è ïðè îïðåäåëåííûõ êîîðäèíàòàõ ( óõîä çà îáëàñòü èãðû) îíà äîëæíà óíè÷òîæèòüñÿ. Âñå îê êîãäà ïóëÿ îäíà. Íî òê ìíå íàäî ÷òîáû ÿ ìîã äåëàòü íåîãðàíè÷åííîå êîëè÷åñòâî âûñòðåëîâ òî ÿ ïîìåùàþ ïóëè â ìàññèâ è êàæäûé êàäð äåëàþ àïäåéò öèêëîì ñòîëüêî ðàç ñîêëüêî ïóëü íà ñöåíå. Íî êîãäà ïóëÿ äîñòèãàåò êîîðäèíàò â êîòîðûõ äîëæíà áûòü óíè÷òîæåíà âîçíèêàåò îøèáêà "ArgumentError: Error #2025: Ïðåäîñòàâëåííûé DisplayObject äîëæåí áûòü äî÷åðíèì ýëåìåíòîì âûçûâàþùåãî îáúåêòà.
at flash.display::DisplayObjectContainer/removeChild()
at game_fla::MainTimeline/moveBullet()"

Ïîíÿòíî ÷òî ÿ êàê òî íåïðàâèëüíî óäàëÿþ. Ïîäñêàæèòå, êàê ïðàâèëüíî ïîæàëóéñòà.

Âîò ÷àñòü êîäà î êîòîðîé ÿ ãîâîðþ.

Êîä
stop();

import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;

var numOfitems:Number=0;
var bullets_arr:Array = new Array();

stage.addEventListener (MouseEvent .MOUSE_DOWN , addBullet);

function addBullet(c:MouseEvent ):void {
    
    var bullet:mc_bullet = new mc_bullet();
    addChild(bullet);
    bullets_arr.push(bullet);
    numOfitems = bullets_arr.length;
}

addEventListener(Event.ENTER_FRAME, moveBullet);
function moveBullet(e:Event) :void
{
    for(var i:int=0; i < numOfitems; i++ )
    {
        bullets_arr[i].update();
        if (bullets_arr[i].y < 200)
        {
            removeChild(DisplayObject(bullets_arr[i]));
            trace("bullet removed by range");
        }
        
    }
}


ß íå î÷åíü ïîíèìàþ êòî ÿâëÿåòñÿ âûçûâàþùèì îáúåêòîì äëÿ bullets_arr[i] - bullets_arr? stage? èëè ìîæåò ÿ âîîáùå íåïðàâèëüíî äåëàþ...
Òóò ãðàíèöà óñòàíîâëåíà â 200 ïèêñåëåé ñâåðõó äëÿ íàãëÿäíîñòè èñ÷åçàåò ïóëÿ èëè íåò.

Ñïàñèáî smile.gif
Âåðíóòüñÿ â íà÷àëî ñòðàíèöû
 
+Îòâåòèòü ñ öèòèðîâàíèåì äàííîãî ñîîáùåíèÿ
chingachgoog
ñîîáùåíèå 24.08.2011 - 10:19
Ñîîáùåíèå #2


Àêòèâèñò
****

Ãðóïïà: Ïîëüçîâàòåëü
Ñîîáùåíèé: 987
Ðåãèñòðàöèÿ: 27.02.2009
Èç: Moscow
Ïîëüçîâàòåëü ¹: 9144



Çàìåòüòå - êîãäà ïóëÿ îäíà - âñ¸ ïðåêðàñíî ðàáîòàåò. Çíà÷èò ñ äî÷åðíîñòüþ äèñïëåéíûõ îáúåêòîâ ïðîáëåì íåò.
Ìíå âîò äâå âåùè íåïîíÿòíû:
1) ×òî äåëàåò ôóíêöèÿ update?
2) Íó èç äèñïëåé-ëèñòà ïóëÿ óäàëÿåòñÿ ÷åðåç removeChild. Íî â ìàññèâå bullets_arr îíà ïî-ïðåæíåìó îñòàåòñÿ! È êîãäà ÂÒÎÐÎÉ ðàç èç ìàññèâà bullets_arr áåðåòñÿ ýòîò îáúåêò, òî îí ÓÆÅ ïîíÿòíî íå ÿâëÿåòñÿ äî÷åðíèì ê ñòåéäæó!

NB!

9) Íåîáõîäèìîñòü äåñòðóêòîðîâ


Âåðíóòüñÿ â íà÷àëî ñòðàíèöû
 
+Îòâåòèòü ñ öèòèðîâàíèåì äàííîãî ñîîáùåíèÿ

Îòâåòèòü â ýòó òåìóÎòêðûòü íîâóþ òåìó
1 ÷åë. ÷èòàþò ýòó òåìó (ãîñòåé: 1, ñêðûòûõ ïîëüçîâàòåëåé: 0)
Ïîëüçîâàòåëåé: 0

 



- Òåêñòîâàÿ âåðñèÿ Ñåé÷àñ: 17.10.2011 - 21:19