Просмотр полной версии : как задать количество повторений движения
veles2008
09.12.2009, 12:06
Приветствую!
На сцене есть объект, кнопка (двигаться), кнопка (вперёд) поле ввода (сколько раз повторить движение) и кнопка пуск которая запускает движение объекта.
Нужно нажать "двигаться" потом "вперёд", потом указать "сколько раз повторить движение" и кнопку пуск после чего объект начинает движение которое мы задали.
Как сделать повторение?
сначала несколько вопросов
- одно движение вперед это будет смещение объекта в нужные координаты?
- счетчик движений уже сделан?
- про onEnterFrame(); уже читал?
У автора пошаговое движение, не плавное, onEnterFrame тут не годится.
Детали все мне тоже не ясны, но должно быть что-то вроде этого:
var timeStep:Number = 1000; //1 сек.
var count:Number = 0; //счетчик шагов
var stepQuantity:Number = 0; //количество шагов
var moveStarted:Boolean = false ; //признак того, что движение стартовало
start_btn.onRelease = function () {
stepQuantity = Number(input_tf.text); //из текствого поля берется количество шагов
moveId = setInterval(moveIt, timeStep); //запусается движение, выполняющееся периодически с интервалом timeStep
}
function moveIt () {
var allowMove:Boolean = count <= stepQuantity && !isNaN(stepQuantity) && !moveStarted;
//проверка того, что:
// - счетчик не достиг конца
// - в поле было введено именно число, т.е. Number(input_tf.text) не даст NaN
// - движение уже не было начато
if (allowMove) {
moveStarted = true ;
//само движение
}
else {
clearInterval (moveId);
count = 0;
stepQuantity = 0;
moveStarted = false ;
}
}
Промежуточные кнопки типа направления и само движение тут не отражены, отражена только организация периодичности выполнения и легитимного старта движения.
veles2008
09.12.2009, 22:51
что то ничего не получается
Добавлено через 17 минут
попробую объяснить детали.
Нужно создать программиркуемого исполнителя. Который бы исполнял линейные, программы, программы с условием и циклические программы. Первые два уже сделаны. Остался цикл.
Так вот фрагмент программы с циклом: есть кнопки вперёд, повторить, сколько раз повторить, пуск.
При нажимании на эти кнопки можно организовывать следующие комбинации:
1.
Повторить
вперёд
3 раза
объект 3 раза передвигается вперёд
2.
Повторить
вперёд
вперёд
1 раз
объект 2 раза передвигается вперёд
3.
вперёд
повторить
вперёд
2 раза
вперёд
объект передвигается вперёд 4 раза
Вводите в массив свои команды, а исполнитель будет читать инструкции из массива.
veles2008
09.12.2009, 23:42
Так это понятно, а как цикл в массив "всунуть" и что б он когда нужно повторился?
может кто исходник глянет?
может кто исходник глянет?
А чего на swf глядеть, вопрос и так понятен.
Так это понятно, а как цикл в массив "всунуть" и что б он когда нужно повторился?
я бы извратился бы таким образом:
var command_Array = ["move:return2;move:return1","move:up2,return1",и т.д.]
соответственно команды можно будет выдирать с помощью substring.
move - вперед;
return2 - повторить действие два раза;
; - окончание первого действия
и т.д.
Вызывайте нужную функцию для решения нужной задачи.
veles2008
10.12.2009, 00:08
а если я задам повторить 100 раз, то 100 функций создавать нужно?
а если я задам повторить 100 раз, то 100 функций создавать нужно?
Мдяяя.
функции являются действия, которыми будет пользоваться исполнитель. Функции создаются один раз, а вызываются сколько угодно раз. Создали вы например функцию для какого то действия и все, теперь только вызывайте её столько, сколько нужно раз. И не надо ничего сто раз создавать. Например вы хотите повторить одно и то же действие сто раз, то просто вызовите функцию, которую вы хотите исполнить и там она выполнит действия сто раз ориентируясь по командам, которые вы возьмете из массива
Спешл фор Ю
Мега Трэш пример:D
В боксе выбираете "по прямой" > вперед/назад > число повторений .
Можно ещё выбрать "произвольное движение", это бонусом..бесплатно:D
И вот, кстати, похожая тема была
http://flasher.ru/forum/showthread.php?t=133518
veles2008
10.12.2009, 13:15
Спасибо, но это не то что нужно
Добавлено через 13 минут
Я сделал
function doMove (direct:String) {
switch (direct) {
case 'VPEROD' :
var ss1=Number(vp1.text);
bk._x += 20*ss1;
break;
case 'POV':
for (var ii:Number = 0; ii<pow1_var; pow1_var--) {
case '1VPEROD' :
var ss1=Number(vp1.text);
bk._x += 20*ss1;
}
break
}
}
Только при повторном запуске цикл не хочет повторятся. Почему?
Добавлено через 33 минуты
Всё, я понял. Всем спасибо!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.