Форум 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=93294)

Bustrui 18.03.2007 00:44

Движение клипа с помощью стрелок клавиатуры
 
Я буквально 3 дня назад установил Macromedia Flash MX (v7)
Собсно полазил по инэту и наткнулся на кучу флэш игр... вот захотелось научиться делать игры самому...
Убил кучу трафика на поиск всяческих туториалов но практичеки ничего не понял....
Надеюсь мне тут помогут освоить море возможностей ActionScriptа

вопрос №1:)
я создаю новый флэш документ, рисую квадрат, конвертирую его в символ(мовиКлип) и называю его KV
Подскажите как заставить двигаться символ KV про помощи стрелок клавиатуры (ап, давн, лэфт, райт)


Зарание благодарен :)

etc 18.03.2007 01:06

Автор отправляется придумывать нормальное название своей теме, которое я жду в личку. До тех пор — закрыто.

iNils 18.03.2007 01:06

Код:

var list:Object = new Object ();
list.onKeyDown = function () {
        trace (KV);
        if (Key.isDown (Key.LEFT)) {
                KV._x--;
        }
        if (Key.isDown (Key.RIGHT)) {
                KV._x++;
        }
        if (Key.isDown (Key.UP)) {
                KV._y--;
        }
        if (Key.isDown (Key.DOWN)) {
                KV._y++;
        }
};
Key.addListener (list);

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

Bustrui 18.03.2007 01:41

Цитата:

Сообщение от iNils
Код:

var list:Object = new Object ();
list.onKeyDown = function () {
        trace (KV);
        if (Key.isDown (Key.LEFT)) {
                KV._x--;
        }
        if (Key.isDown (Key.RIGHT)) {
                KV._x++;
        }
        if (Key.isDown (Key.UP)) {
                KV._y--;
        }
        if (Key.isDown (Key.DOWN)) {
                KV._y++;
        }
};
Key.addListener (list);

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

Спс!
я вставил этот код в первый кадр затем тестирую фильм и при нажатие например на стрелку вверх вылазит окошко с текстом
undefined
undefined

а квадрат(KV) как стоял на месте так и стоит....

iNils 18.03.2007 01:50

А KV это название символа в библиотеке, или это название экземпляра?

Bustrui 18.03.2007 01:57

Цитата:

Сообщение от iNils
А KV это название символа в библиотеке, или это название экземпляра?

это название символа в библиотеке.

Хм... чёто я так и не понял чем символ отличается от экземпляра.... я думал это одно и тоже...
подскажите пожалуйста что такое экземпляр и как ему дать название?...

iNils 18.03.2007 02:04

Представте, что у вас не один объект, а несколько. И к кому тогда будет относится действие? Поэтому для каждого экземпляра (то что на сцене) дают собственное уникальное имя. Для этого надо открыть панель Properties и вместо <Instance Name> написать KV.

Bustrui 18.03.2007 02:14

Цитата:

Сообщение от iNils
Представте, что у вас не обин объект, а несколько. И к кому тогда будет относится действие? Поэтому для каждого экземпляра (то что на сцене) дают собственное уникальное имя. Для этого надо открыть панель Properties и вместо <Instance Name> написать KV.

Спс за пояснение, дошло )
Вот и второй вопрос:
Квадрат(KV) двигается очень медленно... как изменить его скорость?

iNils 18.03.2007 02:28

Ну например поменять _x-- на _x-=5, и по аналогии в других местах (_x-- это тоже самое, что и _x-=1)

Bustrui 18.03.2007 02:44

Вложений: 1
Цитата:

Сообщение от iNils
Ну например поменять _x-- на _x-=5, и по аналогии в других местах (_x-- это тоже самое, что и _x-=1)

спс.
вот еще вопрос:
к примеру вместо квадрата я сделал танк :) как сделать чтоб танк всегда ехал носом вперёд?
вот во вложение мой танк.. видно что он всегда направлен вверх...

iNils 18.03.2007 02:56

Не понял вопроса.

Bustrui 18.03.2007 03:12

Цитата:

Сообщение от iNils
Не понял вопроса.

как сделать чтоб он поворачивал? допустим жму влево и танк поворачивается дулом в лево
сейчас кудаб я не жал он всегда повёрнут вверх....

Kikasso 18.03.2007 03:40

работайте с _rotation

iNils 18.03.2007 03:53

Код:

var list:Object = new Object ();
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
KV.onEnterFrame = function () {
        var x:Number = 0;
        var y:Number = 0;
        if (Key.isDown (Key.LEFT)) {
                KV.angle -= KV.angleSpeed;
        }
        if (Key.isDown (Key.RIGHT)) {
                KV.angle += KV.angleSpeed;
        }
        KV._rotation = KV.angle - 90;
        if (Key.isDown (Key.UP)) {
                x = -KV.speed * Math.cos (KV.angle * (Math.PI / 180));
                y = -KV.speed * Math.sin (KV.angle * (Math.PI / 180));
        }
        if (Key.isDown (Key.DOWN)) {
                x = KV.speed * Math.cos (KV.angle * (Math.PI / 180));
                y = KV.speed * Math.sin (KV.angle * (Math.PI / 180));
        }
        KV._x += x;
        KV._y += y;
};


Bustrui 18.03.2007 04:21

Цитата:

Сообщение от iNils
Код:

var list:Object = new Object ();
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
KV.onEnterFrame = function () {
        var x:Number = 0;
        var y:Number = 0;
        if (Key.isDown (Key.LEFT)) {
                KV.angle -= KV.angleSpeed;
        }
        if (Key.isDown (Key.RIGHT)) {
                KV.angle += KV.angleSpeed;
        }
        KV._rotation = KV.angle - 90;
        if (Key.isDown (Key.UP)) {
                x = -KV.speed * Math.cos (KV.angle * (Math.PI / 180));
                y = -KV.speed * Math.sin (KV.angle * (Math.PI / 180));
        }
        if (Key.isDown (Key.DOWN)) {
                x = KV.speed * Math.cos (KV.angle * (Math.PI / 180));
                y = KV.speed * Math.sin (KV.angle * (Math.PI / 180));
        }
        KV._x += x;
        KV._y += y;
};


ухты :eek: антересно получилось ))
я тут с _rotation эксперементировал...

я смотрю у вас везде стоит ";"... скопировал ваш код и поудалял везде эти знаки и без них всё работало без ошибок, вы его ставите в конце каждой строки... какой смысл?

etc 18.03.2007 04:24

Цитата:

Сообщение от Bustrui
я смотрю у вас везде стоит ";"... скопировал ваш код и поудалял везде эти знаки и без них всё работало без ошибок, вы его ставите в конце каждой строки... какой смысл?

Смысл в том, чтобы обозначить, что действие закончилось.

iNils 18.03.2007 04:25

Это не я ставлю, а сам флеш при автоформате. Потому что так правильно.
Если флеш не обращает на это внимание, то например php будет ругаться.

Bustrui 18.03.2007 04:43

спс, всё ясно.

Эх... получая эти коды особо не научишся...
вот к примеру
Код:

var list:Object = new Object ()
что это такое, непонять...
Немогли бы вы подсказать какойнить сайт с описанием всех этих функций?

etc 18.03.2007 05:00

По кнопке F1 есть мануал.

iNils 18.03.2007 05:05

Цитата:

Сообщение от Bustrui
Эх... получая эти коды особо не научишся...

Трезвая мысль. Все бы так думали.

Bustrui 18.03.2007 05:09

Цитата:

Сообщение от __etc
По кнопке F1 есть мануал.

Жаль что он не на русском языке :(

iNils 18.03.2007 05:20

http://www.flasher.ru/forum/showthread.php?t=72459

Bustrui 18.03.2007 05:43

Вложений: 1
ну да ладно... попробую продолжить обучение+срздание игры с помошью ваших подсказок :) (конечно если вы не против :) )

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

сейчас меня волнует как сделать препятствия на дороге.
Я создал еще один слой и в нём нарисовал чтото похожее на забор, конвертировал его в символ и назвал pregrada(экземпляр назвал также)
как сделать чтоб мой танк немог проехать сквозь преграду?

на всякий случай вкладываю исходник

Bustrui 18.03.2007 05:47

Цитата:

Сообщение от iNils



"AS Language Reference на русском"не хочет качаться (

iNils 18.03.2007 05:58

Я бы вам советал для начала покопаться в сети на тему создание игр, что бы хотя бы иметь представление.
У меня нормально только что скачался.

Bustrui 19.03.2007 02:46

Цитата:

Сообщение от iNils
Я бы вам советал для начала покопаться в сети на тему создание игр, что бы хотя бы иметь представление.
У меня нормально только что скачался.

вчера и сегодня искал... одну ерунду нахожу с готовми кодами....
Немогли бы вы открть тайну откуда берутся эти пораметр: angle, speed, angleSpeed? и где посмотреть их список?
в проге жму ф1 и пиш в поиске к примеру angleSpeed - ненаходит....

iNils 19.03.2007 04:36

В самом начале кода
Код:

...
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
...

Я вам советую купить книгу по флешу и почитать, какие именно - заходите в поиск по форуму, в строке поиска наберите книги и выберите поиск по заголовкам.

Bustrui 19.03.2007 06:52

Цитата:

Сообщение от iNils
В самом начале кода
Код:

...
KV.angle = 90;
KV.speed = 5;
KV.angleSpeed = 2;
...

Я вам советую купить книгу по флешу и почитать, какие именно - заходите в поиск по форуму, в строке поиска наберите книги и выберите поиск по заголовкам.

спс за совет.
вот решил поискать в гугле(всегда яндексом пользовался) и сразу наткнулся на очень интересный сайт-электронную книгу
аж зачитался, настолько всё ясно и доходчиво расписано что оторваться невозможно :)
теперь хоть както начинаю разбераться :)

кстати сслочку можно тут выложить?
правила не читал - лень :)

iNils 19.03.2007 06:56

Если книга была предназначена для свободного доступа, то можно. А правила надо прочитать.

Bustrui 19.03.2007 07:51

Цитата:

Сообщение от iNils
Если книга была предназначена для свободного доступа, то можно. А правила надо прочитать.

http://www.intuit.ru/department/inte...lashmxascript/
я бы советовал вам разместить ссылочку гденить в заметном месте для новичков вроде меня :)

iNils 19.03.2007 07:55

Если бы вы пользовались поиском по форуму, то нашли бы эту ссылку раз 5.

terbooter 19.03.2007 11:56

Если автору интересно, вот
http://www.dionaholding.ru/news/articles/tbg_flash
неплохие туториалы по созданию tile based игр

J0x 20.07.2007 17:12

_rotation
 
Ребята, а вот вопрос:
как сделать, чтобы при нажатии на клавиши "вверх" или "вниз", нос косм.корабля немного отклонялся от горизонтального положения.
А при отпускании, он обратно возвращался в горизонтальное поолжение.
Мне не надо, чтобы он вокруг своей оси двигался.

Код:

starship._rotation=starship._rotation+3;
это естественно не подходит.

Нужно примерно задать интервал углов до куда может корабль поворачивать, только я не могу сообразить как.

Вот скрипт корабля:

Код:

_root.starshiphead.iID1 = setInterval(movieShip, 40, _root.starship, 10);
//функция 1: движение starship
function movieShip(starship, step) {
        if (Key.isDown(Key.RIGHT)) {
                starship._x = _root.starship._x+step;
        if (Key.isDown(Key.LEFT)) {
                starship._x = _root.starship._x-step;
        }

        if (Key.isDown(Key.DOWN)) {
                starship._y = _root.starship._y+step;
                //starship._rotation=starship._rotation+3;
        }
        if (Key.isDown(Key.UP)) {
                starship._y = _root.starship._y-step;
                //starship._rotation=starship._rotation-3
        }
}


J0x 20.07.2007 17:43

попробовал так, тоже не получается:

Код:

//функция 1: движение starship
function movieShip(starship, step) {
    if (Key.isDown(Key.DOWN)) {
          starship._y = _root.starship._y+step;
          starship._rotation=starship._rotation+stepRptation;
    }
    if (Key.isDown(Key.UP)) {
          starship._y = _root.starship._y-step;
          starship._rotation=starship._rotation-stepRptation;
    }
}

//интервал rotation
createRotataoinInt = setInterval(createRotataoin, 0);
stepRptation = 3;
minRotataoin = -300;
maxRotataoin = 60;
function createRotataoin(minRotataoin, maxRotataoin){
    if((starship._rotation=starship.minRotataoin)||(starship._rotation=starship.maxRotataoin)){
          stepRptation = 0;
    }
}



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

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