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

Hanzo 22.06.2005 19:59

метод движения
 
Помогите создать метод движения точки в определенные координаты.
Метод должен принимать координаты X,Y, имя объекта который надо двигать и скорость. Сложность в том, что надо двигать объект с определенной скоростью, при этом прийти в четко указанные координаты.
Еще сложность в том, что двигать, объект надо не зависимо от EnterFrame, для этого надо использовать setIntrval который надо будет остановить по прибытии в указанные координаты, а флаг о прибытии получить неоткуда.
В общем, выглядеть все должно так:
Я щелкаю куда угодно, и точка начинает ехать туда, куда я кликнул с указанной заранее скоростью.
Если в то время когда точка едет в указанные ранее координаты, я кликну в другом месте, она должна начать ехать к новым координатам.
pl_move_to_coord(player:String, coordX:Number, coordY:Number, speed:Number):Void {
}

Может быть, у кого нибудь есть готовая функция движения, выложите пожалуйста :)

Nirth 22.06.2005 20:09

И че вам все выдумывать да выдумывать, создавать...сделано уже все
Код:

//Создаем Мувик
_root.createEmptyMovieClip("ball_mc",3);
//рисуем кружок
ball_mc.lineStyle(35,0xff6600,100);
ball_mc.moveTo(0,0);
ball_mc.lineTo(0.5,0);
//Двигаем
import mx.transitions.*;
import mx.transitions.easing.*;
var moving = new mx.transitions.Tween(ball_mc, "_x", None.easeOut, 0,50,20);


silin 22.06.2005 20:29

общая схема
Код:

var v=10,id=0;
mc.onMouseDown=function(){
        clearInterval(id);
        var x=this._parent._xmouse-this._x,y=this._parent._ymouse-this._y;
        var r=Math.sqrt(x*x+y*y),a=Math.atan2(y,x);
        x=v*Math.cos(a),y=v*Math.sin(a);
        var n=int(r/v),m=this;
        if(n)id=setInterval(function(){if(!--n)clearInterval(id);m._x+=x,m._y+=y;updateAfterEvent()},10);
}


Nirth 22.06.2005 20:32

Кстати вот по этой ссылке есть очень клевый тутор по системе easing'ов
http://www.actionscript.org/tutorial...ng/index.shtml

Hanzo 22.06.2005 20:47

ого, как все не сложно :d
спасибо всем..

Nirth 22.06.2005 21:08

Код:

var moving = new mx.transitions.Tween(ball_mc, "_x", None.easeOut, 0,50,20);
где сложно? одна строчка всего...это ведь классы, в них не нужно копаться просто нужно юзать ;)

Hanzo 23.06.2005 01:40

Цитата:

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

var moving = new mx.transitions.Tween(ball_mc, "_x", None.easeOut, 0,50,20);
где сложно? одна строчка всего...это ведь классы, в них не нужно копаться просто нужно юзать ;)

Я постараюсь разобратся, только я еще не знаю как я буду это делать, ты мне показал так как тебе понятно, мне не понятно :(

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

Nirth 23.06.2005 01:56

Разбор полетов
Код:

//Импортируем нужные нам библиотеки, дабы не писать путь полностью,
//да и читабильность возрастает
import mx.transitions.*;
import mx.transitions.easing.*;
//переходим к делу,
/*
ball_mc - цель над которой будем извращаеться
None.easeOut - None это класс, для линейного движения, easeOut это просто метод(в данном классе они все одинаковые)
0 - ноль это начальная координата
50- дистанция на которую будем двигаться
20 - продолжительность(в нашем случае в кадрах)
*/
var moving = new Tween(ball_mc, "_x", None.easeOut, 0,50,20);


Штрек 23.06.2005 02:35

Цитата:

Сообщение от Nirth
Разбор полетов
Код:

//Импортируем нужные нам библиотеки, дабы не писать путь полностью,
//да и читабильность возрастает
import mx.transitions.*;
import mx.transitions.easing.*;
//переходим к делу,
/*
ball_mc - цель над которой будем извращаеться
None.easeOut - None это класс, для линейного движения, easeOut это просто метод(в данном классе они все одинаковые)
0 - ноль это начальная координата
50- дистанция на которую будем двигаться
20 - продолжительность(в нашем случае в кадрах)
*/
var moving = new Tween(ball_mc, "_x", None.easeOut, 0,50,20);


Всё это радостно, однак нет самого главного -
ответа на вопрос:
"Если в то время когда точка едет в указанные ранее координаты, кликну в другом месте, она должна начать ехать к новым координатам."
У Сила есть.....

Штрек 23.06.2005 02:40

Просто доработать....
Код:

import mx.transitions.*;
import mx.transitions.easing.*;
var v = 10, id = 0;
mc.onMouseDown = function() {
        var x = this._parent._xmouse, y = this._parent._ymouse;
        moving = new Tween(this, "_x", None.easeOut, this._x, x, 20);
        moving = new Tween(this, "_y", None.easeOut, this._y, y, 20);
};



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

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