Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 12.04.2014, 20:12
Булат Гиниятов вне форума Посмотреть профиль Отправить личное сообщение для Булат Гиниятов Найти все сообщения от Булат Гиниятов
  № 1  
Ответить с цитированием
Булат Гиниятов

Регистрация: Apr 2014
Сообщений: 18
По умолчанию Веревка

Хочу сделать веревку. Получилось что-то вроде змейки(на самом деле почерпнул немного отсюда http://www.flasher.ru/forum/showthread.php?p=1046501). Хочу сделать один конец закрепленным, а другой можно было бы двигать. Прошу помощи т.к. сам я начинающий

Код AS3:
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;
}
Вложения
Тип файла: zip Веревка.zip (8.5 Кб, 33 просмотров)


Последний раз редактировалось Wolsh; 12.04.2014 в 20:30.
Создать новую тему   Часовой пояс GMT +4, время: 05:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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