PDA

Просмотр полной версии : hitTest (attachMovie и мувик на сцене)?


repz
27.12.2007, 16:59
Можно ли отследить хиттест приаттаченного ролика и ролика на сцене?

Fernando Costa
27.12.2007, 17:08
можно

repz
27.12.2007, 17:10
А как?

Fernando Costa
27.12.2007, 17:19
как обычно

repz
27.12.2007, 17:49
Как обычно не работает!
Пробую объяснить, вот уонструкция работает:
for (i=0; i<5; i++) {
r=attachMovie("b", "b"+i, i);
r._x=50+i;
r._y=150+i;
if (r.hitTest(a))
{
trace(")))");
}
}
А вот не работает:
for (i=0; i<snowflakes; i++) {

t = attachMovie("snow", "snow"+i, i);
t._alpha = 20+Math.random()*60;
t._x = -(width/2)+Math.random()*(1.5*width);
t._y = -(height/2)+Math.random()*(1.5*height);
t._xscale = t._yscale=50+Math.random()*(max_snowsize*10);
t.k = 1+Math.random()*2;
t.wind = -1.5+Math.random()*(1.4*3);
t.onEnterFrame = mover;
if (t.hitTest(a))
{
trace(")))");
}

}

Fernando Costa
27.12.2007, 18:03
а где функция mover?
Мне кажется что тут путаница с областью видимости, проставьте трейсы - сами разберетесь

repz
27.12.2007, 18:09
Мда виноват проглядел в трейсе, действ. есть "))))".
Но только один раз, а я задумывал что б каждый раз при столкновении.
Как енто мона реализовать?
весь код:
init = function () {

width = 1024;
// pixels
height = 100;
// pixels
max_snowsize = 10;
// pixels
snowflakes = 100;
// quantity
for (i=0; i<snowflakes; i++) {

t = attachMovie("snow", "snow"+i, i);
t._alpha = 20+Math.random()*60;
t._x = -(width/2)+Math.random()*(1.5*width);
t._y = -(height/2)+Math.random()*(1.5*height);
t._xscale = t._yscale=50+Math.random()*(max_snowsize*10);
t.k = 1+Math.random()*2;
t.wind = -1.5+Math.random()*(1.4*3);
t.onEnterFrame = mover;

}
};
mover = function() {

if (t.hitTest(a))
{
trace(")))");
}
trace (t);

this._y += this.k;
this._x += this.wind;
if (this._y>height+10) {

this._y = -20;

}
if (this._x>width+20) {

this._x = -(width/2)+Math.random()*(1.5*width);
this._y = -20;

} else if (this._x<-20) {

this._x = -(width/2)+Math.random()*(1.5*width);
this._y = -20;

}


}
init();
Срабатывает, но как то странно, через раз или вообще не срабатывает и выводит в трейс 100 "))))" , то есть общее кол-во на сцене, а как вывести только столкновения. Как обратиться именно к той которая совершила хиттест?

Fernando Costa
27.12.2007, 19:11
если вам нужно какое-то физическое столкновение то хит-тест тут не уместен, пользуйтесь математикой. Код ваш труден для чтения, плохо отформатирован :(