![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2013
Сообщений: 19
|
Просто если бы код был бы в кадрах, я бы додумался, а в класса, а даже не имею представление как вторую рыбку сделать.....поэтому и написал что лучше мне писать в кадрах)
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
Оукай. Вот вам код в кадре.
import com.greensock.TweenLite; import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; /** * ... * @author wolsh */ //внедрить картинку, когда пишите код в кадре не получится, поэтому будем считать, что у вас в библиотеке есть мувик(не битмап) Fish c включенным export to actionscript var _fish:MovieClip; //пока просто пустая ссылка var _targetX:Number; //переменные видно во всех функциях ролика var _targetY:Number; init ();//обрати внимание, функция будет вызвана один раз после старта function init():void { _fish = new Fish(); //создаем экземпляр рыбки //_fish.smoothing = true; //если рыбка мувик, а не битмап, то сглаживание и так будет this.addChild(_fish); //кидаем рыбку на сцену //_targetX, targetY - переменные которые хранят координаты, куда мы хотим направить рыбку. Рыбка кидается на сцену в координатах 0,0, изначально мы направляем ее в центр сцены _targetX = stage.stageWidth / 2; _targetY = stage.stageHeight / 2; go(); //отсюда переходим в go } //до того, как отправить рыбку в плавание к точке, нужно развернуть ее в нужном направлении function go():void { var angle:Number = 180 / Math.PI * Math.atan2(_targetY - _fish.y, _targetX - _fish.x); //эту формулу надо знать, как "отче наш", формула определяет угол на который надо повернуть рыбу, чтобы она из своих текущих координат, смотрела на _targetX, targetY, 180 / Math.PI - перевод из радиан в градусы, потому что свойство .rotation спрайта принимает градусы, а результат Math.atan2 в радианах //используется так же scaleX=-1 или scaleX=-1. Это масштабирование по оси x. scaleX=-1 равносильно flip horizontal if (_targetX < _fish.x) TweenLite.to(_fish, 0.5, { scaleX: -1, rotation:180+angle, onComplete:onDirect } ); //используется onComplete. После завершения твина, рыбка повернута к искомой точке носом, будет вызвана функция onDirect else if (_targetX > _fish.x) TweenLite.to(_fish, 0.5, { scaleX: 1, rotation:angle, onComplete:onDirect } ); else onDirect(); } //вызывается, когда рыбка уже повернута к точке носом, отправляем ее в плавание к точке function onDirect():void { TweenLite.to(_fish, 1, { x: _targetX, y:_targetY, rotation:0, onComplete:onFloat } ); //по завершению твина будет вызвана ф-я onFloat } //рыбка закончила плавание к точке, выбираем ей новую точку для плавания function onFloat():void { _targetX = Math.random() * stage.stageWidth; _targetY = Math.random() * stage.stageHeight; go(); } Подсказки. 1) Если надо несколько рыбок, значит надо в цикле просто создать несколько мувиков с рыбками 2) Если рыбок несколько, то нужно как-то указать функциям, запускающим движение, для какой-конкретно рыбки запустить движение. Значит функция должна принимать параметр - ссылку на мувик рыбки и использовать его дальше в коде. 3) Когда твин завершается, то с помощью onComplete он запускает следующую функцию логики. Но теперь эти функции принимают параметр, как его передать? В для этого существует onCompleParams.
__________________
мой пустой блог |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Цитата:
Сначала про зарплату сказать, а потом всё-таки и скинуть код. Не понимаю я этого. iflamberg, если не хотите помогать — не делайте этого. А хамить не стоит тем, кто просит помочь.
__________________
hauts.ru |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
Да, соглашусь, я был слишком прямолинеен и груб. Просто был крайне раздражен нежеланием автора топика хотя бы чуть-чуть поработать самостоятельно, может быть, я такое поведение тоже считаю хамством, проявлением крайнего неуважения к участникам форума.
К сожелению, "написанное не вырубишь топором"(или сказанное, не помню, как было в поговорке), тем более, если оно процитированно следующим постом. Если я заслуживаю плюса или бана по мнению администрации - так тому и быть.
__________________
мой пустой блог |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 19
|
Цитата:
|
|
|||||
|
ВОт так
http://ushan.org/ru/pages/portfolio/...les/fishes.swf TweenLite здесь не подойдет. У рыбки должны быть виртуальные координаты направления к цели, скорость, ускорение. Если ее она проплыла мимо цели, то должна замедлится стремясь вернуться назад, пока не дойдет до нудной точки. ПРиблизительно как и человек на велосипеде Потом угол поворота направления тоже не может меняться мгновенно в реальной жизни, и у него тоже должна быть своя скорость и ускорение.Вы говорите новичек, в принципе знания ООП здесь не обязательны, но если не было навыков раоты с кинематикой то вам будет сложновато, попробуйте для начала написать классичискую задачку с падающим на землю и отскакивающим от нее мячиком Или движением палочки по касательной к элипсу. ![]() Добавлено через 5 минут Или, даже лучше всего, алгоритм выпущенной стрелы. Только без TweenLite на уровне задания скорости и ускорения свободного падения Добавлено через 28 минут Вот вам для начала основа для экспериментов: http://wonderfl.net/c/adZE (на этом сервисе можете писать код и компилить прямо на сайте) package { import flash.display.Sprite; import flash.events.Event; public class Test2 extends Sprite { private var sprite :Sprite; private var speedX :Number = 5; private var speedY :Number = -3; private var grvity :Number = 0.1; public function Test2() { init(); } private function init():void { initSptrite(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function initSptrite():void { sprite = new Sprite(); addChild(sprite); sprite.graphics.beginFill(0x0000ff); sprite.graphics.drawEllipse(0, 0, 20, 3); sprite.x = 20; sprite.y = 100; } private function update():void { sprite.x += speedX; speedY += grvity; sprite.y += speedY; var rotationRad:Number = Math.atan2(speedY, speedX); sprite.rotation = rotationRad / Math.PI * 180; } private function enterFrameHandler(event:Event):void { update(); } } }
__________________
... Последний раз редактировалось Александр Мостовой; 05.03.2013 в 14:23. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 21
|
К вопросу о рыбах
Недавно на досуге прототип игрушки начал писать http://pixorama.ru/demo/bigfish/ Тоже твинером движение сделал http://pixorama.ru/demo/bigfish/ |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:08. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|