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

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

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

Регистрация: May 2012
Сообщений: 1
Attention Проблема с отскоком объекта

Прямоугольник размером 1366на768, объект должен хаотично перемещаться по нему и отскакивать от границ. с математикой не в ладах, может кто-нибудь сталкивался с подобным)
Вот пример, но он для круга..может можно его как-то переделать. Заранее большое спасибо)
Код AS1/AS2:
 onClipEvent(load){
	 var k = (dist - R) /  R;
 _x -= dx*k;
 _y -= dy*k;
v = 5;
rBall = _width / 2;
angle = random(360) * Math.PI / 180;
vx =  v*Math.sin(angle);
vy = -v*Math.cos(angle);
xc = 531;
yc = 210;
R = 700 - rBall;
function fly() {
_x += vx;
_y += vy;
 var dx = _x - xc;
 var dy = _y - yc;
 var dist = Math.sqrt(dx*dx + dy*dy);
 if ( dist >= R ) {
	 n1x = dx / dist;
	 n1y = dy / dist;
	 vn = vx*n1x + vy*n1y;
	 vx -= 2*vn*n1x;
	vy -= 2*vn*n1y;
	updateAfterEvent();
 }
}
setInterval ( fly, 20 );
 }

Старый 12.05.2012, 13:37
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Код AS1/AS2:
var stageWidth = 1024;
var stageHeight = 768;
var speed = 10;
 
var ball = createBall();
 
var randomStartAngle = Math.random() * Math.PI * 2;
ball.vx = Math.cos(randomStartAngle);
ball.vy = Math.sin(randomStartAngle);
ball._x = stageWidth / 2;
ball._y = stageHeight / 2;
 
function createBall() {
	var d = this.getNextHighestDepth();
	var ballInstance = this.createEmptyMovieClip("ball_" + d, d);
	ballInstance.beginFill(0x000000,100);
	ballInstance.moveTo(-10,-10);
	ballInstance.lineTo(10,-10);
	ballInstance.lineTo(10,10);
	ballInstance.lineTo(-10,10);
	ballInstance.lineTo(-10,-10);
	ballInstance.endFill();
	return ballInstance;
}
this.onEnterFrame = function() {
	var newPosX = ball._x + ball.vx * speed;
	var newPosY = ball._y + ball.vx * speed;
	if (newPosX < 0 || newPosX > stageWidth) {
		ball.vx *= -1;
	}
	if (newPosY < 0 || newPosY > stageHeight) {
		ball.vy *= -1;
	}
	ball._x += ball.vx * speed;
	ball._y += ball.vy * speed;
};
__________________
hauts.ru


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

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

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


 


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


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