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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Apr 2001
Сообщений: 36
По умолчанию Перетаскивание по окружности...

Есть шарик, вот с таким кодом:

onClipEvent (mouseMove) {
a=this._parent._xmouse;
b=this._parent._ymouse;
if ((a>9) && (a<80) && (b>11) && (b<82))
{this._x = this._parent._xmouse;
this._y = this._parent._ymouse;}
}

Соответственно движется за мышой в заданном квадрате... А надо, чтобы все было точно так, но чтобы он двигался по окружности в тех же границах... Воотсетственно, нужно координату x не трогать, а y как определить в зависимости от х?

Вроде как по логике - из уравнения окружности:
(x-xx)*(x-xx)+(y-yy)*(y-yy)=R*R

Соответственно хх и уу - координаты центра...
R - радиус...

А как это все во флеш загнать? Какой формулой?

Старый 04.11.2003, 13:33
dee2 вне форума Посмотреть профиль Отправить личное сообщение для dee2 Найти все сообщения от dee2
  № 2  
dee2
 
Аватар для dee2

Регистрация: May 2003
Адрес: Moscow
Сообщений: 957
Отправить сообщение для dee2 с помощью ICQ
есть такие замечательные функции, как sin и cos

Старый 04.11.2003, 13:34
designer вне форума Посмотреть профиль Отправить личное сообщение для designer Найти все сообщения от designer
  № 3  
designer

Регистрация: Apr 2001
Сообщений: 36
По умолчанию Знаю, что есть...

А поподробнее можно, как с их помощью записать? И куда девать координаты центра?

Старый 04.11.2003, 14:11
Techmaker вне форума Посмотреть профиль Отправить личное сообщение для Techmaker Найти все сообщения от Techmaker
  № 4  
Techmaker
"человек"
 
Аватар для Techmaker

Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
хе-хе, триганометрия вот самый простой пример теорема Пифагора
Код:
/* функция рисования nuran'а 
уже 3'тий раз на форуме пишу, использую для рисования окружности, чтобы было видно границы */
MovieClip.prototype.circle = function(x, y, r) { 
var mas = new Array(); 
var step = 16; 
var angle = 360/step; 
var rad = Math.PI/180; 
for (var i = 0; i<=step; i++) { 
mas[i] = new Object(); 
mas[i].x = Math.cos(angle*rad*i)*r+x; 
mas[i].y = Math.sin(angle*rad*i)*r+y; 
} 
this.moveTo(mas[0].x, mas[0].y); 
for (var i = 0; i<step; i += 2) { 
// curveThreeTo 
var cx = 2*mas[i+1].x-0.5*(mas[i].x+mas[i+2].x); 
var cy = 2*mas[i+1].y-0.5*(mas[i].y+mas[i+2].y); 
this.curveTo(cx, cy, mas[i+2].x, mas[i+2].y); 
} 
};

this.createEmptyMovieClip("circle1",500)
with(circle1){
lineStyle(5,0x000000,100)
circle(0,0,100)
_x=Stage.width/2
_y=Stage.height/2 
}

with(this.createEmptyMovieClip("mc",1)){
lineStyle(5,0xFF0000,100)
lineTo(.5,.5)
_x=Stage.width/2
_y=Stage.height/2
}

mc.onEnterFrame=function(){
this.delta_x=Stage.width/2-_xmouse
this.delta_y=Stage.height/2-_ymouse
if(Math.sqrt(this.delta_x*this.delta_x+this.delta_y*this.delta_y)<95){
this._x=_xmouse
this._y=_ymouse
}else{
this.a=180+(Math.atan2(this.delta_y,this.delta_x)*180)/Math.PI
this.r=95
this._x=Math.cos(this.a*(Math.PI/180))*this.r+Stage.width/2
this._y=Math.sin(this.a*(Math.PI/180))*this.r+Stage.height/2
}
}
// by Techmaker (newtech@front.ru)
__________________
flash it

Старый 04.11.2003, 14:13
dee2 вне форума Посмотреть профиль Отправить личное сообщение для dee2 Найти все сообщения от dee2
  № 5  
dee2
 
Аватар для dee2

Регистрация: May 2003
Адрес: Moscow
Сообщений: 957
Отправить сообщение для dee2 с помощью ICQ
типа этого
решено с помошью уравнения пифагора
Вложения
Тип файла: zip ball.zip (2.2 Кб, 91 просмотров)

Старый 04.11.2003, 14:21
dee2 вне форума Посмотреть профиль Отправить личное сообщение для dee2 Найти все сообщения от dee2
  № 6  
dee2
 
Аватар для dee2

Регистрация: May 2003
Адрес: Moscow
Сообщений: 957
Отправить сообщение для dee2 с помощью ICQ
2 Techmaker:

у меня код значительно попроще...
это я тупее или круче получаюсь?

Старый 04.11.2003, 15:14
Techmaker вне форума Посмотреть профиль Отправить личное сообщение для Techmaker Найти все сообщения от Techmaker
  № 7  
Techmaker
"человек"
 
Аватар для Techmaker

Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
Цитата:
Оригинал написал(а) dee2
у меня код значительно попроще...
это я тупее или круче получаюсь?
что то у тебя двигается как то рывками да и стопорится при переходе на 360...
а у меня всё плавно, к тому же у меня ещё код не относящийся к теме, добавлен просто для нагляности границ:
Код:
/* функция рисования nuran'а 
уже 3'тий раз на форуме пишу, использую для рисования окружности, чтобы было видно границы */
MovieClip.prototype.circle = function(x, y, r) { 
var mas = new Array(); 
var step = 16; 
var angle = 360/step; 
var rad = Math.PI/180; 
for (var i = 0; i<=step; i++) { 
mas[i] = new Object(); 
mas[i].x = Math.cos(angle*rad*i)*r+x; 
mas[i].y = Math.sin(angle*rad*i)*r+y; 
} 
this.moveTo(mas[0].x, mas[0].y); 
for (var i = 0; i<step; i += 2) { 
// curveThreeTo 
var cx = 2*mas[i+1].x-0.5*(mas[i].x+mas[i+2].x); 
var cy = 2*mas[i+1].y-0.5*(mas[i].y+mas[i+2].y); 
this.curveTo(cx, cy, mas[i+2].x, mas[i+2].y); 
} 
};

this.createEmptyMovieClip("circle1",500)
with(circle1){
lineStyle(5,0x000000,100)
circle(0,0,100)
_x=Stage.width/2
_y=Stage.height/2 
}
и возможность движения внутри окружности с проверкой:
Код:
mc.onEnterFrame=function(){
this.delta_x=Stage.width/2-_xmouse
this.delta_y=Stage.height/2-_ymouse
if(Math.sqrt(this.delta_x*this.delta_x+this.delta_y*this.delta_y)<95){
this._x=_xmouse
this._y=_ymouse
}/*...*/
}
итого, без этого всего, остаётся код по теме:
Код:
with(this.createEmptyMovieClip("mc",1)){
lineStyle(5,0xFF0000,100)
lineTo(.5,.5)
}

mc.onEnterFrame=function(){
this.delta_x=Stage.width/2-_xmouse
this.delta_y=Stage.height/2-_ymouse
this.a=180+(Math.atan2(this.delta_y,this.delta_x)*180)/Math.PI
this.r=95
this._x=Math.cos(this.a*(Math.PI/180))*this.r+Stage.width/2
this._y=Math.sin(this.a*(Math.PI/180))*this.r+Stage.height/2
}
// by Techmaker (newtech@front.ru)
так у кого проще, у кого короче, у кого правильнее?
__________________
flash it


Последний раз редактировалось Techmaker; 04.11.2003 в 15:19.
Старый 04.11.2003, 16:04
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 8  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Techmarker!
Я твой код ещё не стал разбирать, но. кажется, окружность ты строишь по определённым координатам, а границы движения проводишь взависимости от Stage!
Просто разверни окашко нра весь экран

Старый 04.11.2003, 16:08
dee2 вне форума Посмотреть профиль Отправить личное сообщение для dee2 Найти все сообщения от dee2
  № 9  
dee2
 
Аватар для dee2

Регистрация: May 2003
Адрес: Moscow
Сообщений: 957
Отправить сообщение для dee2 с помощью ICQ
а так?
Вложения
Тип файла: zip ball.zip (2.4 Кб, 98 просмотров)

Старый 04.11.2003, 16:15
Techmaker вне форума Посмотреть профиль Отправить личное сообщение для Techmaker Найти все сообщения от Techmaker
  № 10  
Techmaker
"человек"
 
Аватар для Techmaker

Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
Цитата:
Оригинал написал(а) 2K WebStudio
Techmarker!
Я твой код ещё не стал разбирать, но. кажется, окружность ты строишь по определённым координатам, а границы движения проводишь взависимости от Stage!
Просто разверни окашко нра весь экран
это не так уж и важно, я просто сделал движок координаты указываёте свои
__________________
flash it

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

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

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


 


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


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