PDA

Просмотр полной версии : Неправильный duplicateMovieClip


flazher
03.11.2008, 09:58
Есть код:
_root.onEnterFrame = function() {
count = random(30);
if(count == 25) {
for(var i = 0;i < 2;++i) {
duplicateMovieClip("ball","newball" + i,100);
setProperty("newball" + i,_x,random(550));
setProperty("newball" + i,_y,random(400));
}
}
}
То есть на сцене есть клип ball, и через некоторые промежутки времени должна появляться копия этого клипа.
Проблема в том, что копия получается только один раз, затем она просто начинает перемещаться из места на место. Что я делаю не так?

scarbo
03.11.2008, 11:31
duplicateMovieClip("ball","newball" + i,100)
Глубина одна и таже.
А по-хорошему должно быть так:var i = 0;
function double() {
var X:Number = Math.random()*550;
var Y:Number = Math.random()*440;
ball_mc.duplicateMovieClip("ball_mc"+i,i);
_root["ball_mc"+i]._x = X
_root["ball_mc"+i]._y = Y
i++;
}
var Time = setInterval(double, 1000);
И ни каких заумностей не надо

flazher
03.11.2008, 11:58
Спасибо

Alkaz
03.11.2008, 12:37
а еще лучше наверное так:

function double() {
var new_mc:MovieClip = ball_mc.duplicateMovieClip("ball_mc"+i,i);
new_mc._x = Math.random()*550;
new_mc._y = Math.random()*440;
i++;
}

scarbo
03.11.2008, 12:50
одинаково

Alkaz
03.11.2008, 13:16
одинаково обращаться к элементу массива и по ссылке?

flazher
03.11.2008, 14:08
Alkaz, код scarbo работает, не нужно мне никаких прочих изощрений.

Wolsh
03.11.2008, 14:09
Нет, scarbo, не одинаково. Учитесь думать и писать чисто. Привыкайте избавлять процессор от ненужных операций, а свои глаза и мозги - от ненужного напряжения. Когда-нибудь Вы напишите БОЛЬШУЮ программу или игру. И все эти "мелочи" вдруг начнут иметь БОЛЬШОЕ значение))))))

scarbo
03.11.2008, 14:52
to Wolsh,спасибо,я знаю,что ссылка лучше(мы кстати это уже с Вами обсуждали,помните про блок сигарет?)
Но блин,у меня какая-то на дупликэйт привычка дурная,вот так через массив писать.Когда пустые мувики пишу в цикле,то всегда через переменную.
Еще раз спасибо,буду избавляться.