PDA

Просмотр полной версии : Заставить предмет постоянно двигаться


Flash_AS3
24.09.2013, 22:28
Может кто знает как заставить предмет постоянно двигаться например чтобы мяч в игре постоянно прыгал?

MikroAcse
24.09.2013, 22:53
Может кто знает как заставить предмет постоянно создавать сингулярности во вселенной, излучая при этом нереальные радиоактивные волны, например чтобы белая дыра в нашей галактике постоянно извергала материю?
Извините, что?

Flash_AS3
24.09.2013, 23:02
заставить предмет анимационно допустим постоянно двигаться..... к примеру мяч чтобы постоянно прыгал от точки до точки вперед и назад

caseyryan
24.09.2013, 23:11
добавить слушатель ENTER_FRAME, а в обработчике изменять положения мяча на нужное

Flash_AS3
24.09.2013, 23:26
Спасибо..но как сделать так чтобы он прыгал вперед до конца экрана и назад

Akopalipsis
25.09.2013, 02:01
Думал, что это очень просто и все скажут - пусть сам делает.. И тут я решил, что - ну надо же помочь, а то может человек только начал.. И не так то это и просто! я бы использовал готовые анимации.. И то, что это поможет ТС я не уверен, но это лучше чем не чего :)
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;

public class Movement extends Sprite
{
//мячи
private var boll:Sprite;
private var boll2:Sprite;
//массив в который всё складываем
private var object:Array;
//счетчик кол-во элементов в массиве
private var counter:int = 0;

public function Movement()
{
if (stage)
{
init();
}
else
{
addEventListener(Event.ADDED_TO_STAGE, init);
}

}

private function init(event:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);

//создали массив
object = [];
//создаем мячи
boll = new Sprite();
boll.graphics.beginFill(0x5098DA);
boll.graphics.drawCircle(0, 0, 30);
boll.graphics.endFill();

boll2 = new Sprite();
boll2.graphics.beginFill(0x4FDB9C);
boll2.graphics.drawCircle(0, 0, 40);
boll2.graphics.endFill();
//передаем их в метод ..все что попадет в этот метод будет двигаться как мяч
//только как мяч...чтобы прыгали по горизонтали Вам надо это самим сделать
addObject(300,-20, 200,boll2 , 400);//начало,скорость,растояние,то что движится, начальная координата...
addObject(300,-30, 100, boll, 300);

addEventListener(Event.ENTER_FRAME, enterFrameHandler);

}

private function movement():void
{
//проверяем наличие элементов в массиве, если их нет то код не сработает
if (!counter) return;
//если мы тут то элементы есть
//прибавляем ай на четыре
for (var i:int = 0; i < counter; i+=4)
{
//прибавляем к текущему элементу его скорость
object[3 + i].y += object[2 + i];
//если мяч достиг максимальной или минимальной дистанции
//меняем ему в массиве скорость на отрицательную и он
//двигается в другую сторону
if (object[3 + i].y < object[1 + i])
{
var course:Number = object[2 + i];
object.splice(2 + i, 1, course * -1);
}
if (object[3 + i].y > object[0 + i])
{
var course0:Number = object[2 + i];
object.splice(2 + i, 1, course0 * -1);
}

}
}
private function addObject($startY:int,$speedY:int,$distance:int,$obj:DisplayObject,$startX:int=NaN):void
{
//прибавляем счетчик элементов сразу на четыре
counter += 4;
//тут вот высчитывается направление... по другому я не смог
var course:Number = $distance-($distance + 1);
//тут высчитываем максимум
var end:Number = $startY + ($distance * course);
//тут скорость
var speed:Number = Math.round($distance / $speedY);
//помещаем всё в массив
object.push($startY,end,speed,$obj);
if ($startX) object[counter - 1].x = $startX;
if ($startY) object[counter - 1].y = $startY;
//тут добавляем наши мячи в список отображения
addChild(object[counter-1]);
}
private function enterFrameHandler(event:Event):void
{
movement();
}

}

}

Flash_AS3
25.09.2013, 02:26
Спасибо большое буду разбираться....Да только начал недавно)

NikolyA
25.09.2013, 13:29
Flash_AS3 ник то у тебя многообещающий, а взять и открыть книжку и почитать азы вам лень

Fogflasher
26.09.2013, 14:49
Akopalipsis, а зачем вы использовали $ перед переменными, это какой-то трюк, или просто для удобства?

XoJlToH
26.09.2013, 15:24
Akopalipsis, а зачем вы использовали $ перед переменными, это какой-то трюк, или просто для удобства?
$ перед переменными можно ставить для обозначения аргумента функции, а можно и не ставить
привычка :) я тоже так делаю, хотя считается плохим стилем

Tails
26.09.2013, 15:57
Приватные переменные лучше именовать начиная с нижнего подчёркивания: "_".

Знак "$" используется в пхп для указания переменных. Там это нужно для ускорения интерпретаций кода, так-как исходники запускаются в чистом, не скомпилированном виде. Для ас эта практика - бессмысленна.

Akopalipsis
26.09.2013, 18:42
Akopalipsis, а зачем вы использовали $ перед переменными, это какой-то трюк, или просто для удобства?
я где то это увидел и по началу не придал значения. Но прошло немного времени и я попался на конфликте пространства имён ( точно не помню что было ). И тут я понял, что можно ставить знак $ в параметрах как где то видел. А потом полез в php и ещё больше закрепил в своём мозгу этот знак.

Добавлено через 1 минуту
Приватные переменные лучше именовать начиная с нижнего подчёркивания: "_".
Спасибо за напоминание, а то я почему то вообще перестал подчеркивать.