![]() |
|
||||||||||
|
|
|
|||||
|
Здравствуйте!
Суть задачи такая, есть автобус на остановках в него заходят и выходят люди. И так автобус движется по своему маршруту. В чем проблемы: 1) реализую я с таймером, может это не правильно, но так начала, так вот анимируется у меня только до первой остановки, потом не знаю как вызвать метод передвижения на новую координату, ибо она не передается, а задается уже в функции если кто знает, то скажите что надо изменить/исправить 2) как сделать постепенное исчезновение объекта, т.е. людей которые вышли на остановке Вот мой пример package {
import ascb.util.NumberUtilities;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.utils.Timer;
public class buble extends Sprite {
var mySprite:Sprite = new Sprite();
var number:Number = NumberUtilities.random(1,50);
private var _text:TextField = new TextField();
private var a:Array = [];
private var _x:Array = [];
private var _y:Array = [];
private var _timer:Timer = new Timer(60);
private var _currentFrame:int = 0;
var speedX:Number = 0;
var speedY:Number = 0;
var speed:Number = 1;
private var _object:Sprite= new Sprite();
public function buble() {
test()
addChild(_object);
mySprite.graphics.beginFill(0x1555CC,0.5);
mySprite.graphics.drawCircle(0, 0, 4);
mySprite.x = 110;
mySprite.y = 94;
addChild(mySprite);
}
public function test(){
for (var i:int = 0; i< number; i++)
{
a[i] = new Sprite();
a[i].graphics.beginFill(0x5522CC,0.5);
_x[i] = NumberUtilities.random(100,120);
_y[i] = NumberUtilities.random(100,120);
a[i].graphics.drawCircle(0, 0, 1);
a[i].x = _x[i];
a[i].y = _y[i];
_object.addChild(a[i]);
}
_timer.addEventListener(TimerEvent.TIMER, onTick);
_timer.start();
}
public function onTick(event:TimerEvent):void
{
if (event.target.currentCount == 25)
{
addEventListener(Event.ENTER_FRAME, moveBall);
}
for (var i:int = 0; i< number; i++)
{
movePeople(110 - a[i].x, 90 - a[i].y, a[i]);
/*a[i].x = 110 ;
a[i].y = 95 ;*/
}
if (event.target.currentCount == 85)
{
for (var i:int = 0; i< number; i++)
{
a[i].x = _x[i];
a[i].y = _y[i];
}
_timer.stop();
}
}
public function moveBall(event:Event):void {
var distanceX:Number = 100 - _object.x;
var distanceY:Number = 50 - _object.y;
var dist = Math.sqrt(distanceX*distanceX + distanceY*distanceY);
if (dist > 5)
{
//Вычисляем угол между шаром и мышью
var angle:Number = Math.atan2(distanceY, distanceX);
//Вычисляем новые скорости по x и y
speedX = Math.cos(angle) * speed;
speedY = Math.sin(angle) * speed;
//Двигаем шар на новые координаты (ближе к мыши)
_object.x += speedX;
_object.y += speedY;
mySprite.x += speedX;
mySprite.y += speedY;
}
}
public function movePeople( _x:Number, _y:Number, _a:Sprite):void {
var distanceX:Number = _x ;
var distanceY:Number = _y ;
var dist = Math.sqrt(distanceX*distanceX + distanceY*distanceY);
if (dist > 5)
{
//Вычисляем угол между шаром и мышью
var angle:Number = Math.atan2(distanceY, distanceX);
//Вычисляем новые скорости по x и y
speedX = Math.cos(angle) * speed;
speedY = Math.sin(angle) * speed;
//Двигаем шар на новые координаты (ближе к мыши)
_a.x += speedX;
_a.y += speedY;
}
}
}
}
|
|
|||||
|
Регистрация: Aug 2009
Адрес: Казахстан Усть-Каменогорск
Сообщений: 249
|
ммм а сделайте функцию типа
и вызывайте ее множество раз и вуаля.)
__________________
Flex+AS3 good) |
|
|||||
|
Спасибо, создала и засунула туда ф-цию moveBall, не знаю правильно ли, но работает.
Добавлено через 3 часа 13 минут Полуется все равно какой-то бред если вызывать ф-цию перемещения по ивенту таймера, то получается что для каждой точки передаю свое время если вызывать ф-цию перемещения по ивенту фрейма, то ведет себя странно Подскажите, как верно изобразить движение, если у меня будут остановки. а между остановками двигается по кривой или может подскажите как сделать флаг на нахождение точки на координате, просто у меня почему значения положения точки не изменяются, хотя он и движется |
|
|||||
|
Регистрация: Aug 2009
Адрес: Казахстан Усть-Каменогорск
Сообщений: 249
|
хмм... что то волшебство какое-то, вы отследите конец перемешения и начинайте новое при конце старого?
__________________
Flex+AS3 good) |
|
|||||
|
я именно так и пытаюсь сделать, но в чем то проблема
буду пробовать заново |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|