![]() |
|
||||||||||
|
|||||
|
Столкнулся с проблемой - не могу сделать так, чтобы мувиклип "плавал" по экрану, не выходя за его пределы... Нужен эффект прицела "шарящего" по экрану. Все мои познания сводятся к clip._x = random(100);
![]() |
|
|||||
|
Модрон-ветеринар
|
Задайте пределы по координатам и водите мувик по сцене, например, с помощью setInterval или onEnterFrame, время от времени меняя рандомно шаг движения и его знак (+-).
|
|
|||||
|
поподробнее пожалуйста, я только учусь)
|
|
|||||
|
Я бы с Tween Motion делал бы.
Если надо не програмное решение, то Motion Guide http://articles.antory.ru/adobe-flas...ciya-vo-flash/ |
|
|||||
|
Модрон-ветеринар
|
Держите. Немного иначе, чем я посоветовал.
Исходник тоже есть. Перемещается прицел pricel_mc в заданных пределах координат по рандомным точкам и за рандомное время. 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. PS. Можно ввести плюшку - нормировать время прохождения в зависимости от координат конечных точек, с тем, чтобы скорость прохождения была одинаковой... Попробуйте, если захотите так... Последний раз редактировалось mooncar; 07.04.2010 в 21:28. |
|
|||||
|
За руководство спасибо большое) И за скрипт - это как раз то что нужно) А вот вопрос - почему начальные координаты заданы не просто числом, а выражением?
Последний раз редактировалось MkTwo; 07.04.2010 в 21:28. |
|
|||||
|
Модрон-ветеринар
|
Я думал, вы догадаетесь.
![]() Это, чтобы было понятно, как вычислялось. Например: 275 - это X-координата центра прямоугольной области 400 - ширина прямоугольной области 20 - половина диаметра прицела (т.е. радиус) Получаем крайний левый предел по X. Остальное - по аналогии. Можете просто на глаз у себя подобрать, если лень вычислять. |
|
|||||
|
точно) там просто прямоугольник был закрыт от редактирования) теперь ясно)
Добавлено через 7 минут почему-то выдаёт ошибку при экспорте...syntax error в первой строке, причём только в моём файле, при экспорте исходника всё норм... можно как-то обойтись без экспорта mx.transitions.Tween? |
|
|||||
|
как вариант, на много проще, без всяких рандомов и твинов
|
|
|||||
|
у меня почему-то на ActionScript 1.0 не пашет, тока на 2.0, а нужно именно на первом
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|