Форум 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)
-   -   Управление аттаченными мувиками (http://www.flasher.ru/forum/showthread.php?t=75078)

[G@ng$t@]Un1t 04.02.2006 13:02

Управление аттаченными мувиками
 
При создании одной игрушки у меня возник вопрос.-> Вот к примеру код:

attacMovie("mc","mc"+1,this.getNextHighestDepth());

Вопрос такой: как к нему (к ним) обращаться (задвать координаты, поворот и т.д) ?

Erya 04.02.2006 13:47

Код:

var sceneMovies:Array = new Array();
for (var i:Number = 0; i <= 5; i++) {
        var tempMovie:MovieClip = _root.attachMovie('mc', 'mc' + i, _root.getNextHighestDepth());
                sceneMovies.push(tempMovie);
}
for (var i:Number = 0; i < sceneMovies.length; i++) {
        trace(sceneMovies[i]); // Обращаться к мувикам типа sceneMovies[i]._x и т.д.
}

хотябы так :)

[G@ng$t@]Un1t 04.02.2006 16:27

Блин за это сапсибо, но ты не понял... Приведу еще один пример. Есть два мувика, у каждого из них по несколько экземпляров. Первый тип мувиков к примеру стенка или там коробка (не важно), а второй пули. Так как реализовать между ними hitTest ?

Erya 04.02.2006 17:52

Цитата:

Сообщение от [G@ng$t@]Un1t
Блин за это сапсибо, но ты не понял...

Какой вопрос, такой ответ :)

Код:

var wallMovies:Array = new Array(); // Массив, содержащий ссылки на мувиклипы стенок
var bulletMovies:Array = new Array(); // Массив, содержащий ссылки на мувиклипы пуль

for (var i:Number = 0; i <= 5; i++) {
        var tempMovie:MovieClip = _root.attachMovie('wall', 'wall' + i, _root.getNextHighestDepth()); // добавляем новый клип стенки
                wallMovies.push(tempMovie); // суём ссылку на него в массив
}

for (var i:Number = 0; i < wallMovies.length; i++) {
        var currentMovie:MovieClip = wallMovies[i]; // текущий клип в цикле
                currentMovie._x = 100 + (currentMovie._width * i); // делаем какие-то действия
}

for (var i:Number = 0; i <= 1; i++) {
        var tempMovie:MovieClip = _root.attachMovie('bullet', 'bullet' + i, _root.getNextHighestDepth()); // тоже что со стенками
                bulletMovies.push(tempMovie);
}

for (var i:Number = 0; i < bulletMovies.length; i++) {
        var currentBullet:MovieClip = bulletMovies[i]; // текущий клип пули в цикле
        currentBullet._y = 300; // делаем повороты и прочие расстановки
        currentBullet._x = 100 + (currentMovie._width * i);
        currentBullet.onEnterFrame = function(Void):Void { // действия в каждом новом кадре у каждой пули
                this._y -= random(20);
                for (var i:Number = 0; i < wallMovies.length; i++) { // проверяем столкновение пули с паждой стенкой по очереди
                        if (this.hitTest(wallMovies[i])) { // если есть столкновение, то...
                                delete this.onEnterFrame;
                                removeMovieClip(this);
                                removeMovieClip(wallMovies[i]);
                                break;
                        }
                }
        }
}

За оптимальность кода не отвечаю, но как пример, должно помочь! :rolleyes:

[G@ng$t@]Un1t 04.02.2006 18:02

А вот за это огромный respect.


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

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