Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Можно ли поместить MovieClip 1 между слоями MovieClip 2 без добавления в него? (http://www.flasher.ru/forum/showthread.php?t=194501)

Dip52 15.02.2013 19:09

Можно ли поместить MovieClip 1 между слоями MovieClip 2 без добавления в него?
 
Вложений: 1
Пример: есть танк, есть дуло танка. Всё это содержится внутри MovieClip танка. Есть пули. Изначально они находятся над танком. Если я сделаю их под танком, то пули будут вылетать не совсем из дула (дуло маленькое).

Пока что имеется одно решение: создать MovieClip танка и MovieClip дула. Каждому присвоить определенный уровень видимости: танк 0, дуло 2, а вот у пули 1. Ну и изменять координаты MovieClip дула при изменениях координат MovieClip танка.

В приложение я просто добавил MovieClip (второй объект) в MovieClip (первый объект).
Разные MovieClip, но уровни (слои) произвольны.swf   (6.2 Кб)

Nooob 16.02.2013 01:31

нет нельзя

Wolsh 16.02.2013 11:10

Сделайте танку геттер, возвращающий координаты выходного отверстия дула (я так понимаю, геттер направления/угла у Вас уже есть), и помещайте пули туда на старте. Тогда их можно над танком рисовать.

iNils 16.02.2013 15:25

В as3 можно сменить не только слой, но и родителя.

Dip52 17.02.2013 02:39

Цитата:

Сообщение от iNils (Сообщение 1120884)
В as3 можно сменить не только слой, но и родителя.

В смысле — изменить уровень видимости?

iNils 17.02.2013 15:01

В смысле, что можно переместить пулю из одного родителя в другого в момент выхода ее из ствола.

Dip52 17.02.2013 23:48

Цитата:

Сообщение от iNils (Сообщение 1120974)
В смысле, что можно переместить пулю из одного родителя в другого в момент выхода ее из ствола.

То есть, сначала я помещаю пулю внутрь танка, она отлетает на сколько-то, а уже потом перемещаю её на сцену (или куда мне угодно). Я правильно понимаю?

illuzor 18.02.2013 01:57

Dip52, да, правильно. Есть специальные методы localToGlobal()/GlobalToLocal()

КорДум 18.02.2013 09:54

Почему нельзя пулю сразу же поместить в экземпляр класса Мир, подсунув под танк? Угол поворота башни танка скормить пуле через какой-то геттер танка.
Или же даже не под танк, а на слой объектов ниже (у Вас же несколько слоев мира? — фон, все объекты, коллизион-мапс, верхний слой (кроны деревьев всякие загораживающие)?)

Dip52 18.02.2013 16:51

Цитата:

Сообщение от КорДум (Сообщение 1121046)
Почему нельзя пулю сразу же поместить в экземпляр класса Мир, подсунув под танк? Угол поворота башни танка скормить пуле через какой-то геттер танка.
Или же даже не под танк, а на слой объектов ниже (у Вас же несколько слоев мира? — фон, все объекты, коллизион-мапс, верхний слой (кроны деревьев всякие загораживающие)?)

http://ru.wikipedia.org/wiki/%D0%A0%...B5%D0%BD%D0%BE

Вы видите какой там ствол? :)

КорДум 18.02.2013 17:08

Добавлять пулю перед дулом выше танка.

Dip52 18.02.2013 17:14

Цитата:

Сообщение от КорДум (Сообщение 1121120)
Добавлять пулю перед дулом выше танка.

Да, я об этом тоже думал, но как реализовать не знаю.

КорДум 18.02.2013 17:18

Ну радиус от оси башни до конца дула же знаете. Значит можете расположить пулю на окружности этого радиуса - синус для У, косинус для Х. Обычная математика.

Добавлено через 3 минуты
x = cos(angle) * radius + tank.x;
y = sin(angle) * radius + tank.y;

вот как-то так формулы выглядят.

Dip52 19.02.2013 01:10

Цитата:

Сообщение от КорДум (Сообщение 1121124)
Ну радиус от оси башни до конца дула же знаете. Значит можете расположить пулю на окружности этого радиуса - синус для У, косинус для Х. Обычная математика.

Добавлено через 3 минуты
x = cos(angle) * radius + tank.x;
y = sin(angle) * radius + tank.y;

вот как-то так формулы выглядят.

Спасибо. Всё отлично, но не во всех случаях: когда я поворачиваю ствол танка, то пули уже начинают появляться от танка на некотором расстояние. В изначально позиции ствола пули летят прямо из ствола. И ещё, когда я поворачиваю танк или ствол во время стрельбы, то уже появляется сразу несколько пуль... :)

КорДум 19.02.2013 08:40

Цитата:

когда я поворачиваю ствол танка, то пули уже начинают появляться от танка на некотором расстояние
Не учитываете, что башня относительно ходовой тоже смещена.

Цитата:

И ещё, когда я поворачиваю танк или ствол во время стрельбы, то уже появляется сразу несколько пуль
Не понимаю. Код в студию с проблемой.

Dip52 19.02.2013 22:33

Цитата:

Сообщение от КорДум (Сообщение 1121243)
Не учитываете, что башня относительно ходовой тоже смещена.


Не понимаю. Код в студию с проблемой.

Точнее пули появляются как нужно (с тем же интервалом), но в разных местах, по этому появляется ощущение, будто бы происходит разброс (несколько пуль).

Код AS3:

        for(var i:Number = 0; i < bullets.length; i++)
        {
                bullets[i].x += speedBullet * Math.cos(bullets[i].rotation * Math.PI / 180);
                bullets[i].y += speedBullet * Math.sin(bullets[i].rotation * Math.PI / 180);
        }
 
        var tankAngle:Number = tank.rotation * Math.PI / 180;
 
        if(space)
        {
                var ct:Matrix = tank.tower.transform.concatenatedMatrix;
                //вектор направления дула
                var dir_x:Number = ct.a;
                var dir_y:Number = ct.b;
                //поворот дула
                var angle:Number = Math.atan2( dir_y, dir_x ) * 180.0 / Math.PI;
 
 
 
                bullet = new ObjectBullet();
                bullet.x = Math.cos(angle) * radius + ct.tx;
                bullet.y = Math.sin(angle) * radius + ct.ty;
                bullet.rotation = angle;
                bullets.push(bullet);
                stage.addChild(bullet);
        }



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

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