|
|
|||||
Регистрация: Apr 2014
Сообщений: 18
|
Веревка
Хочу сделать веревку. Получилось что-то вроде змейки(на самом деле почерпнул немного отсюда http://www.flasher.ru/forum/showthread.php?p=1046501). Хочу сделать один конец закрепленным, а другой можно было бы двигать. Прошу помощи т.к. сам я начинающий
var Lines:Array= new Array();//Создаем массив который будет хранить в себе все линии var dir:int = 0;//Направление начала веревки var speed:int = 5;//Скорость веревки var speedX:Number;//Скорость по x var speedY:Number;//Скорость по y const PI:Number = Math.PI;//Чтобы быстрее обращаться к PI const enemyNum:int = 130;//И количество линий var x1:Number=0; var y1:Number=0; for (var i=0; i<enemyNum; i++) { var enemy:MovieClip= new L();//Присваиваем переменной enemy мувиклип нашего линии из библиотеки Lines.push(enemy);//push добавляет значение в первую пустую ячейку x1=100 y1=y1 + 2 Lines[i].x = x1;//Размещаем линию по иксу Lines[i].y = y1;//И по игрику addChild(Lines[i]);//Добавляем его на сцену } Lines[0].addEventListener(MouseEvent.MOUSE_DOWN,fun); Lines[0].addEventListener(MouseEvent.MOUSE_UP,funny); function fun(e:Event):void { Lines[0].startDrag(loop); stage.addEventListener(MouseEvent.MOUSE_MOVE, loop); stage.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler); } function funny(f:Event):void { Lines[0].stopDrag(); stage.removeEventListener(MouseEvent.MOUSE_MOVE,moveHandler); stage.removeEventListener(MouseEvent.MOUSE_MOVE, loop); } function loop(e:Event):void { speedX = Math.cos(Lines[0].rotation/180*PI) * speed;//Вычисляем на сколько передвигать начало по x speedY = Math.sin(Lines[0].rotation/180*PI) * speed;//Вычисляем на сколько передвигать начало по y Lines[0].x -=speedX;//Передвигаем начало по x Lines[0].y -=speedY;//Передвигаем начало по y //Пытаемся двигать остальные звенья за началом for (var i:int = 1; i < enemyNum; i++) { Lines[i].rotation = Math.atan2(Lines[i-1].y - Lines[i].y, Lines[i-1].x - Lines[i].x) * (180 / PI) + 180;//Вычисляем угол между текущим звеном и предыдущим, и поворачиваем текущее звено на этот угол var v:Point = new Point(Lines[i-1].x - Lines[i].x, Lines[i-1].y - Lines[i].y); var s:Number = v.length - 2; speedX = Math.cos(Lines[i].rotation/180*PI) * s;//Вычисляем на сколько передвигать текущее звено по x speedY = Math.sin(Lines[i].rotation/180*PI) * s;//Вычисляем на сколько передвигать текущее звено по y Lines[i].x -= speedX;//Передвигаем текущее звено по x Lines[i].y -= speedY;//Передвигаем текущее звено по y } } function moveHandler(event:MouseEvent):void { Lines[0].rotation = Math.atan2(event.stageY-Lines[0].y, event.stageX-Lines[0].x)/Math.PI*180; } Последний раз редактировалось Wolsh; 12.04.2014 в 20:30. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Для оформления своего кода надо использовать теги [as3][/as3]
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Apr 2014
Сообщений: 18
|
Веревка лежит на столе, один конец закреплен, а другой можно двигать. Я почерпнул немного здесь http://www.flasher.ru/forum/showthread.php?p=1046501, но ничего не получается. Есть мысль: каждая точка не должна выходить за радиус от начала веревки. Не могу представить как это можно сделать...
Хотелось бы все сделать без движка Последний раз редактировалось Булат Гиниятов; 12.04.2014 в 21:13. Причина: Недописал |
|
|||||
А если после перебора звеньев от начала к концу (так как у вас сейчас), установить последнее звено в нужную точку (фиксированную) и перебрать звенья уже в обратном порядке (относительно фиксированного звена)?
|
|
|||||
Регистрация: Apr 2014
Сообщений: 18
|
Перебор делать в новом цикле?
|
|
|||||
Регистрация: Apr 2014
Сообщений: 18
|
Цитата:
Добавлено через 5 минут не поделитесь как это у Вас получилось? Буду благодарен |
Часовой пояс GMT +4, время: 18:22. |
|
« Предыдущая тема | Следующая тема » |
|
|