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

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

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
По умолчанию анимация объекта относительно курсора

Всем привет!!!
Помогите разобраться, как можно повторить такой эффект с фоновой картинкой ??

Добавлено через 18 минут
по моему, движение дерева зависит от расстояния между курсором и мигающим спотом.

Добавлено через 3 часа 14 минут
Хотя, нет!
Скорее всего определяется процент расстояния от начала координат сцены до курсора и на этот же процент перемещается координата картинки!
Вот я пытаюсь написать, но пока не получается правильно сформулировать само перемещение картинки:
Код AS3:
var wStage:Number;
var wTree:Number;
var pMoveX:Number = new Number;
 
wStage = stage.stageWidth;
wTree = Full_tree.width;
 
 
 
stage.addEventListener(MouseEvent.MOUSE_MOVE, getPersent);
function getPersent(evt:MouseEvent):void
{
	pMoveX = mouseX * 100 / wStage;//это роцент на который должен перемещаться объект
	if(pMoveX < 50)
	{moveMouseRight();} 
	else{moveMouseLeft();}
 
}
function moveMouseRight()
{Full_tree.x ++;}
function moveMouseLeft()
{Full_tree.x --;}
 
trace(wStage+" – это высота сцены");
trace(wTree+" – это высота картинки");


Последний раз редактировалось Dr_Bra; 24.06.2010 в 17:00.
Старый 25.06.2010, 01:55
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

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

Старый 25.06.2010, 03:52
xaknik вне форума Посмотреть профиль Отправить личное сообщение для xaknik Найти все сообщения от xaknik
  № 3  
Ответить с цитированием
xaknik

Регистрация: Jun 2010
Сообщений: 28
Вот что-то типо того что на том сайте:
Код AS1/AS2:
var objectList:Array = new Array();
//создаем объкеты
for (var i:Number = 0; i<10; i++) {
 var mc:MovieClip = createEmptyMovieClip("circle_mc"+i, i);
 objectList.push(mc);
 mc._x = Math.random()*550;
 mc._y = Math.random()*400;
 //случайный коэффициент замедления
 mc.k = Math.random()*0.1+0.02;
 drawCircle(mc,Math.random()*5+10,Math.random()*0xffffff,100);
}
onEnterFrame = function () {
 //движения объектов за мышкой
 for (var i:Number = 0; i<objectList.length; i++) {
  var mc:MovieClip = objectList[i];
  mc._x += (_xmouse-mc._x)*mc.k;
  mc._y += (_ymouse-mc._y)*mc.k;
 }
 //столкновения
 for (var i:Number = 0; i<objectList.length; i++) {
  var mc1:MovieClip = objectList[i];
  var r1:Number = mc1._width*0.5;
  for (var j:Number = 0; j<objectList.length; j++) {
  var mc2:MovieClip = objectList[j];
  var r2:Number = mc1._width*0.5;
  var dx:Number = mc1._x-mc2._x;
  var dy:Number = mc1._y-mc2._y;
  var len:Number = Math.sqrt(dx*dx+dy*dy);
  if (mc1 != mc2 && len<r1+r2) {
  mc1._x += 0.5*(r1+r2-len)*dx/len;
  mc1._y += 0.5*(r1+r2-len)*dy/len;
  mc2._x -= 0.5*(r1+r2-len)*dx/len;
  mc2._y -= 0.5*(r1+r2-len)*dy/len;
  }
  }
 }
};
function drawCircle(target_mc:MovieClip, radius:Number, fillColor:Number, fillAlpha:Number):Void 
{
 var x:Number = radius;
 var y:Number = radius;
 with (target_mc) {
  beginFill(fillColor,fillAlpha);
  moveTo(x+radius,y);
  curveTo(radius+x,Math.tan(Math.PI/8)*radius+y,Math.sin(Math.PI/4)*radius+x,Math.sin(Math.PI/4)*radius+y);
  curveTo(Math.tan(Math.PI/8)*radius+x,radius+y,x,radius+y);
  curveTo(-Math.tan(Math.PI/8)*radius+x,radius+y,-Math.sin(Math.PI/4)*radius+x,Math.sin(Math.PI/4)*radius+y);
  curveTo(-radius+x,Math.tan(Math.PI/8)*radius+y,-radius+x,y);
  curveTo(-radius+x,-Math.tan(Math.PI/8)*radius+y,-Math.sin(Math.PI/4)*radius+x,-Math.sin(Math.PI/4)*radius+y);
  curveTo(-Math.tan(Math.PI/8)*radius+x,-radius+y,x,-radius+y);
  curveTo(Math.tan(Math.PI/8)*radius+x,-radius+y,Math.sin(Math.PI/4)*radius+x,-Math.sin(Math.PI/4)*radius+y);
  curveTo(radius+x,-Math.tan(Math.PI/8)*radius+y,radius+x,y);
  endFill();
 }
 
}

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
2 xaknik Разве это так как на сайте? Там же передвижение фона главный вопрос, а у вас шарики за курсором бегают.
К тому же это AS3 ветка! )

Старый 25.06.2010, 12:41
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 5  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
получается как то так
Код AS3:
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
 
var w:Number;
var h:Number;
var speedX:Number;
var speedY:Number;
var l1_xpos:Number;
var l2_ypos:Number;
 
speedX = 30;
speedY = 60;
w = stage.stageWidth;
h = stage.stageHeight;
 
 
stage.addEventListener(MouseEvent.MOUSE_MOVE, checkMouse);
function checkMouse(evt:MouseEvent):void
{
	l1_xpos = w/2-(mouseX-w/2);
	l2_ypos = h/2-(mouseY-h/2)+225;
}
 
stage.addEventListener(Event.ENTER_FRAME, moveObj);
function moveObj(evt:Event):void
{
	layer1_mc.x +=(l1_xpos-layer1_mc.x)/speedX;
	layer1_mc.y +=(l2_ypos-layer1_mc.y)/speedY;
}
Добавлено через 1 минуту
Вот только если нужно клип остановить, когда он приблизился своей нижней границей к нижней границе сцены. Это пока у меня не получается.

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

Теги
анимация , движение , курсор
Опции темы
Опции просмотра

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

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


 


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


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