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

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

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

Регистрация: Dec 2010
Сообщений: 1
Question "Дрожание" элемента в определенной области.

Здравствуйте!
Есть такой ролик. Ниже код.
Можно ли сделать так, чтобы "шарик" дергался примерно в рамках прямоугольника?
Буду очень благодарна за помощь!

shake-effect-script.swf   (1.8 Кб)


Код AS1/AS2:
var shakeRange:Number = 2;
 
function shake(target:MovieClip):Void
{
	//select random action for the X axis
	var randomAction = random(2);	
	if(randomAction == 0)
	{
		target._x += shakeRange
	}
	else if(randomAction == 1)
	{
		target._x -= shakeRange
	}
 
	//select random action for the Y axis
	var randomAction = random(2);
	if(randomAction == 0)
	{
		target._y += shakeRange
	}
	else if(randomAction == 1)
	{
		target._y -= shakeRange
	}
}
 
//onEnterFrame that executes the shake function every frame
_root.onEnterFrame = function(){
	shake(player_mc);
}
Вложения
Тип файла: swf shake-effect-script.swf (1.8 Кб, 131 просмотров)

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Здравствуйте!

Я бы переписал всё.

Код AS1/AS2:
import flash.geom.Rectangle;
 
function shake(mc, power, useFullPower, rect){
    var sx = (Math.round(Math.random()) * 2 - 1) * power;
    var sy = (Math.round(Math.random()) * 2 - 1) * power;
    if(!useFullPower){
        sx *= Math.random();
        sy *= Math.random();
    }
    var nx = mc._x + sx;
    var ny = mc._y + sy;
    if(!rect){
        return;
    }
    if(nx < rect.left || nx > rect.right || ny < rect.top || ny > rect.bottom){
        return shake(mc, power, rect)
    }
}
var playerShakeRect = new Rectangle( 50, 50, 250, 250);
player_mc._x = playerShakeRect.left + Math.random() * playerShakeRect.width;
player_mc._y = playerShakeRect.top + Math.random() * playerShakeRect.height;
this.onEnterFrame = function(){
    shake(player_mc, 10, false, playerShakeRect)
}
power — насколько дергать клип.

useFullPower — (true или false) определяет, всегда ли "дергать" на значение power или на произвольное значение в диапазоне power.

rect — экземпляр ректангла для ограничения.

Важно, что если задан последний параметр, то клип изначально должен быть внутри области ограничения.

В коде мог ошибиться, ибо писал в браузере.
__________________
hauts.ru

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

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

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


 


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


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