PDA

Просмотр полной версии : Создание клипа не работает.


ilkadi
24.01.2007, 08:42
Мне нужно, чтобы через промежутки времени от 10 до 20сек появлялись клипы на кокой-то высоте и на произвольном месте по х.
к контроллеру я присоединил следующее:onClipEvent (load) {
//рассчитываем до запуска тарелки
endTime = setInterval(10000 + Math.random()*100000);
}
onClipEvent (enterFrame) {
timeLeft = (endTime - getTimer())/1000;
//рассчитываем когда кончится время в секундах
if (timeLeft <=0) {
//когда оно заканчивается копируем из библиотеки
//клип myMovieClip
attachMovie("myMovieClip","newclip"+_level);
//ставим в примерно нужное место
_root["newclip"+_level]._y = int (380-Math.random()*5000);
_root["newclip"+_level]._x = int(-2900+Math.random()*60000);
//увеличиваем счетчик
_level++;
}
}
К клипу в библиотеке я присоединил следующее:rtfm: :onClipEvent (mouseDown) {
this._parent.removeMovieClip();
//если прямое попадание то удаляем
}
onClipEvent (load) {
a = getTimer()+20000;
this._root._x+=20;
//ставим таймер 20 сек
}
onClipEvent (enterFrame) {
c = (a - getTimer())/1000;
if (c <=0) {
//если время вышло то удаляем
this.removeMovieClip();
}
}
скажите пожалуйста, где ошибка?:confused:
заранее спасибо.

CorC
24.01.2007, 10:13
меня поразило несколько строк:

endTime = setInterval(10000 + Math.random()*100000);

setInterval(функция,интервал,параметры) , а у вас?

this._root._x+=20;

без коментов, просто жесть :)

_root["newclip"+_level]._x = int(-2900+Math.random()*60000);

а вы клипы вообще собираетесь увидеть? :)

Aziz Zaynutdinoff
24.01.2007, 11:25
_level — зарезервированное слово;
в коде огромная масса ошибок, из-за которых он просто ну убей его работать не будет. Для того, чтобы каждую секунду ставить мувик с произвольными координатами необходимо:

//создаём мувик, в который будем attach'ить содержимое
var _mc:MovieClip = this.createEmptyMovieClip("stage_mc", this.getNextHighestDepth());

//устанавливаем интервал в 1 сек (1000 миллисекунд)
var intervalID = setInterval(doAttach, 1000, _mc);

//функция, вызываемая раз в секунду, которая производит attach, в переданный ей MovieClip
function doAttach(_mc:MovieClip):Void
{
//берём следующую бОльшую глубину
var depth:Number = _mc.getNextHighestDepth();
//крепим объект из библиотеки, с дополнительным параметром initObj, где указываем координаты, в которых следует разместить новый MovieClip
var tmp_mc:MovieClip = _mc.attachMovie("myMovieClip", "newclip" + depth + "_mc", depth, {_x:int(Math.random()*Stage.width), _y:int(Math.random()*Stage.height)});

//Вешаем на созданный MovieClip событие. Здесь можно также сделать onEnterFrame и прочие...
tmp_mc.onRelease = function()
{
//Если кликаем по объекту, то он удаляется.
this.removeMovieClip();
}
}

ilkadi
25.01.2007, 08:37
Огромное спасибо. Я знал что у меня уймища ошибок но как и где искать не знал.

CorC
25.01.2007, 10:14
искать можно втавляя trace везде на своем пути

ilkadi
27.01.2007, 08:32
А как сделать так чтобы спустя 30сек клип удалялся?

Kikasso
27.01.2007, 09:42
setTimeout( function(){mc.removeMovieClip();}, 30*1000);или
setTimeout( mc, "removeMovieClip", 30*1000);
должно сработать и то и то, навыбор. Это для 8-ки.

ilkadi
29.01.2007, 08:37
спасибо большое. Приятно когда так быстро все срабатывает!

ilkadi
30.01.2007, 08:18
:o а какой обработчик нужно перед ими поставить? а то промучился иничо не получилось...:(tmp_mc.?????= function(){setTimeout( function(){mc.removeMovieClip();}, 30*1000);}

CorC
30.01.2007, 10:20
onPress :) ыыы
смотря на что нужно удаление делать

ilkadi
31.01.2007, 08:45
нет нужно без onPress потому что при нажатии он и так удаляется. Нужно вот просто: клип появился прошло полминуты, он удалился.

CorC
31.01.2007, 10:05
mc.onLoad= ....setTimeout( ....);}
не понимаю сего изврата, но при появлении клипа через 30 сек он испарится

ilkadi
01.02.2007, 08:30
так нужно чтобы без всяких нажатий - появился клип и через полминуты - кирдык.

CorC
01.02.2007, 10:40
мдя, человек не понимает что хочет, и что ему отвечают
при создании клипа просто напишите setInterval и все...