Форум 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 Кб, 24 просмотров)


Последний раз редактировалось Wolsh; 12.04.2014 в 20:30.
Старый 12.04.2014, 20:26
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Для оформления своего кода надо использовать теги [as3][/as3]
__________________
Reality.getBounds(this);

Старый 12.04.2014, 20:39
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Вот здесь полистайте, найдете пять статей про физику. Точно не помню, но вроде и веревка там есть.

Старый 12.04.2014, 20:59
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А вы хотите чтобы на верёвка болталась (гравитация)?
-----------------
Извиняюсь, не правильно прочитал ваш вопрос. Теперь понял.

Старый 12.04.2014, 21:11
Булат Гиниятов вне форума Посмотреть профиль Отправить личное сообщение для Булат Гиниятов Найти все сообщения от Булат Гиниятов
  № 5  
Ответить с цитированием
Булат Гиниятов

Регистрация: Apr 2014
Сообщений: 18
Веревка лежит на столе, один конец закреплен, а другой можно двигать. Я почерпнул немного здесь http://www.flasher.ru/forum/showthread.php?p=1046501, но ничего не получается. Есть мысль: каждая точка не должна выходить за радиус от начала веревки. Не могу представить как это можно сделать...
Хотелось бы все сделать без движка


Последний раз редактировалось Булат Гиниятов; 12.04.2014 в 21:13. Причина: Недописал
Старый 12.04.2014, 21:25
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А если после перебора звеньев от начала к концу (так как у вас сейчас), установить последнее звено в нужную точку (фиксированную) и перебрать звенья уже в обратном порядке (относительно фиксированного звена)?

Старый 12.04.2014, 21:37
Булат Гиниятов вне форума Посмотреть профиль Отправить личное сообщение для Булат Гиниятов Найти все сообщения от Булат Гиниятов
  № 7  
Ответить с цитированием
Булат Гиниятов

Регистрация: Apr 2014
Сообщений: 18
Цитата:
Сообщение от samana Посмотреть сообщение
А если после перебора звеньев от начала к концу (так как у вас сейчас), установить последнее звено в нужную точку (фиксированную) и перебрать звенья уже в обратном порядке (относительно фиксированного звена)?
Перебор делать в новом цикле?

Старый 12.04.2014, 21:44
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Да, конечно. Я правда не знаю будет ли это правильно работать, надо проверять, ведь это просто идея.

Старый 12.04.2014, 22:01
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 9  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Да, так сработает, проверил у себя. Так что дерзайте, у вас обязательно получится.
NewProjectRope.swf   (1.5 Кб)
Вложения
Тип файла: swf NewProjectRope.swf (1.5 Кб, 150 просмотров)

Старый 12.04.2014, 22:03
Булат Гиниятов вне форума Посмотреть профиль Отправить личное сообщение для Булат Гиниятов Найти все сообщения от Булат Гиниятов
  № 10  
Ответить с цитированием
Булат Гиниятов

Регистрация: Apr 2014
Сообщений: 18
Цитата:
Сообщение от samana Посмотреть сообщение
Да, конечно. Я правда не знаю будет ли это правильно работать, надо проверять, ведь это просто идея.
Что-то у меня не получилось, цикл организовать не получается

Добавлено через 5 минут
Цитата:
Сообщение от samana Посмотреть сообщение
Да, так сработает, проверил у себя. Так что дерзайте, у вас обязательно получится.
NewProjectRope.swf   (1.5 Кб)
не поделитесь как это у Вас получилось? Буду благодарен

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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