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

MkTwo 07.04.2010 20:18

Перемещение мувиклипа
 
Столкнулся с проблемой - не могу сделать так, чтобы мувиклип "плавал" по экрану, не выходя за его пределы... Нужен эффект прицела "шарящего" по экрану. Все мои познания сводятся к clip._x = random(100); :rolleyes:

mooncar 07.04.2010 20:26

Задайте пределы по координатам и водите мувик по сцене, например, с помощью setInterval или onEnterFrame, время от времени меняя рандомно шаг движения и его знак (+-).

MkTwo 07.04.2010 20:46

поподробнее пожалуйста, я только учусь)

_SAM_ 07.04.2010 21:04

Я бы с Tween Motion делал бы.
Если надо не програмное решение, то Motion Guide
http://articles.antory.ru/adobe-flas...ciya-vo-flash/

mooncar 07.04.2010 21:16

Вложений: 1
Держите. Немного иначе, чем я посоветовал.
Исходник тоже есть.

Перемещается прицел pricel_mc в заданных пределах координат по рандомным точкам и за рандомное время.

Код AS1/AS2:

import mx.transitions.Tween;
 
//задаем левый верхний угол области движения
var topLeftX:Number = (275 - 400/2) + 20;
var topLeftY:Number = (200 - 300/2) + 20;
 
//задаем правый нижний угол области движения
var botRightX:Number = (275 + 400/2) - 20;
var botRightY:Number = (200 + 300/2)- 20;
 
//задаем врменные пределы движения между конечными точками, в секундах
var timeMin:Number = 2;
var timeMax:Number = 10;
 
//функция, отвечающая за организацию движения в указанные координаты X и Y и за указанный в секундах промежуток времени
function moveIt (xMove:Number, yMove:Number, timeMove:Number):Void {
        var xTween:Tween = new Tween(pricel_mc, '_x', mx.transitions.easing.None.easeNone, pricel_mc._x, xMove, timeMove, true);
        var yTween:Tween = new Tween(pricel_mc, '_y', mx.transitions.easing.None.easeNone, pricel_mc._y, yMove, timeMove, true);
        //вызов следующего шага после окончания данного
        xTween.onMotionFinished = nextPoint;
}
 
function randRange(min:Number, max:Number):Number {
  var randomNum:Number = Math.floor(Math.random()*(max - min)) + min;
  return randomNum;
}
 
//переход к следующей точке - вычисления вводных и активация движения
function nextPoint () {
        //вычисляем рандомные координгаты конечной точки в заданных пределах
        var xFinish:Number = randRange (topLeftX, botRightX);
        var yFinish:Number = randRange (topLeftY, botRightY);
        //вычисляем рандомный промежуток времени для движения, в секундах
        var timeFinish:Number = randRange (timeMin, timeMax);
        //запусаем очередное движение
        moveIt (xFinish, yFinish, timeFinish);
}
 
//начальный старт движения с кнопки
start_btn.onRelease = nextPoint;
 
//либо автостарт
//nextPoint();

Поставьте поменьше timeMin и timeMax, шустрее будет бегать. Например, 2 и 3.
Естественно, время timeMin < timeMax.

PS. Можно ввести плюшку - нормировать время прохождения в зависимости от координат конечных точек, с тем, чтобы скорость прохождения была одинаковой...
Попробуйте, если захотите так...

MkTwo 07.04.2010 21:21

За руководство спасибо большое) И за скрипт - это как раз то что нужно) А вот вопрос - почему начальные координаты заданы не просто числом, а выражением?

mooncar 07.04.2010 21:32

Я думал, вы догадаетесь. :)
Это, чтобы было понятно, как вычислялось.
Например:
Код AS1/AS2:

var topLeftX:Number = (275 - 400/2) + 20;

275 - это X-координата центра прямоугольной области
400 - ширина прямоугольной области
20 - половина диаметра прицела (т.е. радиус)
Получаем крайний левый предел по X.

Остальное - по аналогии.

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

MkTwo 07.04.2010 21:35

точно) там просто прямоугольник был закрыт от редактирования) теперь ясно)

Добавлено через 7 минут
почему-то выдаёт ошибку при экспорте...syntax error в первой строке, причём только в моём файле, при экспорте исходника всё норм... можно как-то обойтись без экспорта mx.transitions.Tween?

KiL33 07.04.2010 21:44

Вложений: 1
как вариант, на много проще, без всяких рандомов и твинов

MkTwo 07.04.2010 21:49

Цитата:

Сообщение от KiL33 (Сообщение 898777)
как вариант, на много проще, без всяких рандомов и твинов

у меня почему-то на ActionScript 1.0 не пашет, тока на 2.0, а нужно именно на первом


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

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