Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   hitTest (attachMovie и мувик на сцене)? (http://www.flasher.ru/forum/showthread.php?t=105952)

repz 27.12.2007 16:59

hitTest (attachMovie и мувик на сцене)?
 
Можно ли отследить хиттест приаттаченного ролика и ролика на сцене?

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

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


Часовой пояс GMT +4, время: 09:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.