Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Вопрос про поворот на опр. угол... (http://www.flasher.ru/forum/showthread.php?t=73502)

Slayer aka Warrior 23.12.2005 23:34

Вопрос про поворот на опр. угол...
 
Решил я, понимаете ли, сделать игрульку... :) А банальных вещей не знаю... Специально качал книги с нета по AS но там полезного не нашёл...
А вопрос у меня следующий. Есть прямоугольник(условно) при глике мышкой надо чтоб нос этого самого прямоугольника повернулся в том направлении где, собтвенно говоря, кликнули... :)
Если не трудно подскажите кде можно почитать про основы создания Flash игр....
Help NeWbie?!

KUZEN 23.12.2005 23:37

здесь на форуме выкладывали исходники стратегии , там всё это было ... да и поворот дело не сложное нужно просто расчитать угол и повернуть мувик

Король 23.12.2005 23:41

"Специально качал книги с нета по AS но там полезного не нашёл... "

не нашел ничего полезного в книгах по АС? не верю

Slayer aka Warrior 24.12.2005 00:48

А каким образом его вообще рассчитывать? Я просто вообще представления не имею...
2 Король Просто ты меня не прально понял... :) Книга 1 была весом в 20 мб... Но в ней просто тупое описание команд без "особеннстей приминения"... Очень поверхностная книга попалась...

KUZEN 24.12.2005 01:22

Всё просто
в первый кадр и тестим
Код:

_root.createEmptyMovieClip("mc", 1);
mc._x = 250;
mc._y = 200;
with (mc) {
        lineStyle(2, 0x333333, 100);
        moveTo(0, 0);
        lineTo(0, 0);
        lineTo(100, 0);
}
onMouseDown = function () {
        yoffs = _ymouse-_root.mc._y;
        xoffs = _xmouse-_root.mc._x;
        _root.mc._rotation = (Math.atan2(yoffs, xoffs)*180)/Math.PI;
};


Slayer aka Warrior 25.12.2005 20:36

C линией всё пашет на ура, а с прямоугольником глючит... Нашел скриптик, прямоугольник крутиться! Но я хочу чтоб он не сразу а постепенно "крутился"! Делаю такую штуку:
Код:

onMouseDown = function () {
xgll = getProperty("_root.x", _x);
ygll = getProperty("_root.x", _y);
xtt = getProperty("_root.x.targ", _x);
ytt = getProperty("_root.x.targ", _y);
qqy = xgll-xtt;
qqx = ygll-ytt;
ulg = Math.atan2 ( qqy, qqx )*180/3.14+90;
while(_root.x._rotation < ulg){
        _root.x._rotation = _root.x._rotation + 1
}
while(_root.x._rotation > ulg){
        _root.x._rotation = _root.x._rotation - 1
}
}

Но флэш виснет... хелп как это оптимизировать, я туплю наверное

Antares 25.12.2005 20:54

Для начала, прекратить пользоваться черверочным синтаксисом вперемешку с точечной нотацией. Потом -- научиться осмысленно называть переменные. Затем -- подумать, как это поворот "постепенно" будет совершаться в цикле? Нужен последовательный вызов через промежуток времени.

Весьма удивительно, что люди, адрес которых не много, ни мало -- Hell, не знают таких дьявольски простых вещей. ;)

KUZEN 25.12.2005 21:21

Цитата:

Сообщение от Slayer aka Warrior
C линией всё пашет на ура, а с прямоугольником глючит... Нашел скриптик, прямоугольник крутиться! Но я хочу чтоб он не сразу а постепенно "крутился"! Делаю такую штуку:
Код:

onMouseDown = function () {
xgll = getProperty("_root.x", _x);
ygll = getProperty("_root.x", _y);
xtt = getProperty("_root.x.targ", _x);
ytt = getProperty("_root.x.targ", _y);
qqy = xgll-xtt;
qqx = ygll-ytt;
ulg = Math.atan2 ( qqy, qqx )*180/3.14+90;
while(_root.x._rotation < ulg){
        _root.x._rotation = _root.x._rotation + 1
}
while(_root.x._rotation > ulg){
        _root.x._rotation = _root.x._rotation - 1
}
}

Но флэш виснет... хелп как это оптимизировать, я туплю наверное

Всё нормально работает и с прямоугольником и с чем угодно

убираешь этот код

Код:

_root.createEmptyMovieClip("mc", 1);
with (mc) {
        lineStyle(2, 0x333333, 100);
        moveTo(0, 0);
        lineTo(0, 0);
        lineTo(100, 0);
}

на сцене делаешь мувик с именем mc и всё ...

Slayer aka Warrior 25.12.2005 21:45

Прямоугольник колбАсить начинает....
Переменные-переменные... :) Ну вот прижилося так!
А с Hell... Просто когда регался на форуме маленький был и считал что ето круто! Ж)

А как это запузырить через промежуток времени если у нас функция MouseDown?

Kyber Anton 25.12.2005 23:18

onMouseDown = function () {
yoffs = _ymouse-_root.mc._y;
xoffs = _xmouse-_root.mc._x;
_root.mc.ENDrotation = (Math.atan2(yoffs, xoffs)*180)/Math.PI;
};
После этого ты имеешь начальную ротацию(_rotation) и желаемую(ENDrotation),
затем тебе надо посчитать, в какую сторону надо крутить клип(по часовой или против) и дальше в функции
mc.onEnterFrame = function(){
mc._rotation+=mc.AngleMov
}, пока клип не установится на нужный поворот.
А дальше удаляешь mc.onEnterFrame (это, по-моему, mc.onEnterFrame = null)


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

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