Пятница, 19.04.2024, 09:51Главная | Регистрация | Вход

Меню сайта

Точное время

Опрос Сайта

Добавить уроки по Photoshop?
Всего ответов: 22

Поиск

Полезные скрипты - Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Smitg9  
Форум » Флеш » Flash » Полезные скрипты (Здесь скрипты, которые могут быть полезнымы другим)
Полезные скрипты
Smitg9Дата: Воскресенье, 01.05.2011, 20:36 | Сообщение # 1
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
Вылаживайте сюда любые скрипты, которые на ваш взгяд могут быть полезными для других.
 
Smitg9Дата: Воскресенье, 01.05.2011, 20:39 | Сообщение # 2
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
Итак я начну.
Вращение мувиклипа вслед за мышкой:

Для ActionScript 2:

Code

onEnterFrame=function()
{
hero._rotation=Math.atan2(_ymouse-hero._y,_xmouse-hero._x)/Math.PI*180+90;
}

Для ActionScript 3:

Code

addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void{
hero.rotation=Math.atan2(mouseY-hero.y, mouseX-hero.x)/Math.PI*180+90;
}

Ctrl+Enter. Вуаля! Вертится! wink
 
Smitg9Дата: Воскресенье, 01.05.2011, 20:40 | Сообщение # 3
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
ActionScript 2:
Как узнать, вышел ли курсор за рамки ролика? Очень просто. Для этого в любом слое в первом кадре вставляем Dinamic Text и называем его info. Далее в первом кадре вставляем приведенный ниже код.
Code

_global.borderWatcher={};            

AsBroadcaster.initialize(borderWatcher);           

borderWatcher.init = function():Void {

         var clip:MovieClip = _root.createEmptyMovieClip("list_clip"+Math.random(), 100000);

         clip.lineStyle(1, 0, 0);                  

         clip.beginFill(0, 0);

         clip.moveTo(0, 0);

         var xMax:Number = Stage.width, yMax:Number = Stage.height;

         clip.lineTo(0, yMax), clip.lineTo(xMax, yMax), clip.lineTo(xMax, 0), clip.lineTo(0);

         clip.endFill();

         clip.useHandCursor = false;             

         clip.onRollOut = function():Void {

          borderWatcher.broadcastMessage("onStageRollOut");

         };

         clip.onRollOver = function():Void {

          borderWatcher.broadcastMessage("onStageRollOver");

         };

};

borderWatcher.init();                  

//**********************************************************

borderWatcher.addListener(info);                    

info.onStageRollOut = function():Void {

         this.text = "Указатель вышел за границы фильма";

};

info.onStageRollOver = function():Void {

         this.text = "Указатель вошел в границы фильма";

};

ActionScript 3
В ActionScript 3 можно определить что мышка ушла за пределы флеш-ролика, используя событие
mouseLeave для stage. Это событие происходит каждый раз, когда мышка покидает пределы ролика.
Нет события mouseEnter, но можно использовать mouseMove для определения того, что мышка
вернулась к нам.
Простой пример использования нарисованного квадрата в качестве своего курсора.

Code

package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.ui.Mouse;
public class Test extends Sprite {
private var cursor:Sprite = new Sprite();
public function Test() {
cursor.graphics.beginFill(0xFF);
cursor.graphics.drawRect(0, 0, 25, 25);
addChild(cursor);
stage.addEventListener(Event.MOUSE_LEAVE, cursorHide);
stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);
Mouse.hide();
}
public function cursorHide(evt:Event):void {
cursor.visible = false;
}
public function cursorFollow(evt:MouseEvent):void {
if (!cursor.visible) cursor.visible = true;
cursor.x = stage.mouseX;
cursor.y = stage.mouseY;
evt.updateAfterEvent();
}
}
}

В этом примере с помошью кода рисуется красный квадрат и он становится невидимым в том случае если мышка покинула пределы флешки.
Удачи good
 
Smitg9Дата: Воскресенье, 01.05.2011, 22:20 | Сообщение # 4
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
Перетаскиваемое окно.

Нарисуй прямоугольник, преобразуй его в символ MovieClip(F8), и открой на редактирование (щелкнув по нему два раза).
В этом клипе нарисуй что-то типа заголовка окна, выдели только этот заголовок и преобразуй его в символ(F8), только теперь не в MovieClip, а в Button (кнопка).
Выйди из редактирования клипа, выдели его и назначь имя. Для этого выдели клип и нажми Ctrl+F3(Properties), там будет поле для ввода имени, в котором написано - вписывай туда "win" и нажимай Enter(Подтверлить smile
Отлично! половина дела сделана smile . Теперь просто выдели кнопку сию и вызвав панель Actions(F9) впиши туда следующее :

Code

on (press) {//При нажатии мыши
//на кнопке начать все это...
//перетягивать.
    startDrag("win");
}//А когда отпускаешь перетягивание
//останавливается
on (release) {
    stopDrag();
}

Можно попробовать и с обработчиком событий MovieClip'a "onClipEvent" с событием "keyDown", но это будет распространяться на весь Флеш_ролик.
Исходник
 
Smitg9Дата: Понедельник, 02.05.2011, 00:34 | Сообщение # 5
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
Хочу рассказать про симпатичный эффект, который реализуется достаточно просто, а выглядит на пять с плюсом, особенно в связке с надлежащим окружением.

Подобные эффекты обычно реализуют с помошью битмапа и комбинации фильтров на нем. Это не сложно, требуется немного фантазии и «игры» с параметрами фильтров. Но настоящие герои всегда идут в обход.

Сразу объясню почему. Во-первых, подобный прототип будет использоваться в реальном проекте, где вся сцена динамически изменяется перед эффектом, и за ним будет находится много объектов. Во-вторых, требуется высокая скорость работы всей флешки. При размере сцены 1280×700 пикселей, метод с применением битмапов не имеет никаких шансов получить приемлемый FPS на среднем компьютере.

Итак, задача: нужно получить светящийся шлейф от движущегося объекта, если быть точнее — от источника света. Источник может перемещаться по всей сцене, может менять свой размер, поэтому толщина шлейфа тоже должна меняться. Причем желательно, чтобы эффект мог работать как в девятой версии флеш-плеера, так и в более старых, минимально в шестой (с частичной потерей функциональности). AS3 использовать не будем.

Приступим к реализации. Сам шлейф будем рисовать программно, запоминая координаты движения объекта и используя функцию curveTo() для сглаживания траектории движения. Свечение, пожалуй, лучше сделать через GlowFilter() со средним качеством, так как симуляция свечения через многократное рисование шейпов будет медленнее.Будем писать прототип =) :

Code

MovieClip.prototype.Magic = function (len, w, fColor, gColor, ptr) {
// на входе:
// len - количество сегметов шлейфа
// w - начальная толщина шлейфа в пикселах
// fColor - цвет шлейфа
// gColor - цвет свечения вокруг шлейфа (Glow)
// ptr - муви-клип, за которым будет строиться магический шлеф. Если не задан, то за мышью.
      w *= .5;
      // запомним старые координаты начала шлейфа, они нам пригодятся для расчета
      // вектора движения и перпендикуляра к нему
      var oldX = this._xmouse;
      var oldY = this._ymouse;
      // используем координаты мышки, а если задан муви-клип, то его координаты
      if (ptr == undefined) {
        oldX = ptr._x;
        oldY = ptr._y;
      }
      // примерним два фильтра к клипу, в который будет рисовать шлейф.
      // BlurFilter немного размоет края шлейфа, чтобы придать реалистичности
      this.filters = new Array(
        new flash.filters.BlurFilter(2, 2, 1),
        new flash.filters.GlowFilter (gColor, 1, 25, 25, 3, 2)
      );
      // в массиве crd будем хранить текущую и все предыдущии координаты шлейфа,
      // причем их кол-во не будет превышать длинный шлейфа len
      var crd = new Array();
      // на событие перерисовки кадра "повесим" функцию рассчета необходимых переменных и само рисование
      this.onEnterFrame = function() {
        // создадим пустой объект, в нем будем хранить координаты
        // и дополнительные данные каждого узла шлейфа
        var o = new Object();
        // используем координаты мышки, а если задан муви-клип, то его координаты
        if (ptr == undefined) {
          o.x = this._xmouse;
          o.y = this._ymouse;
        } else {
          o.x = ptr._x;
          o.y = ptr._y;
        }
        // рассчитаем угол, равный перпендикуляру к вектору движения, сохраним его в объекте
        o.a = Math.atan2(o.y-oldY, o.x-oldX)+Math.PI*.5;
        oldX = o.x;
        oldY = o.y;
        // поместим объект в массив и обрежем массив до максимальной длины шлейфа
        crd.push(o);
        if (crd.length>len) {
          crd.splice(0, 1);
        }
        // поместим длину массива координат во временную переменную, она немного ускорит
        // цикл перебора массива и будет использована несколько раз
        var l = crd.length;
        // рассчитаем координаты перпендикуляров в каждом узле (с конца шлейфа к его началу),
        // причем линейно будем увеличивать толщину шлейфа до максимальной (заданной через переменную w)
        for (var i = 0; i < l; i++) {
          // возьмем объект из массива
          var o = crd[i];
          // k = коэффициент толщины шлейфа
          var k = w*i⁄l;
          // косинус и синус вектора движения нам нужен для рассчета координат перпендикуляров
          var cs = k*Math.cos(o.a);
          var ss = k*Math.sin(o.a);
          // собственно сам рассчет, x0 и y0 - правая сторона шлейфа, x1 и y1 - левая
          o.x0 = o.x+cs;
          o.y0 = o.y+ss;
          o.x1 = o.x-cs;
          o.y1 = o.y-ss;
          // немного уменьшим координату, дабы получить эффект "огня" -
          // плавного смещения всего шлейфа вверх, это добавит динамики нашему эффекту
          o.y *= .997;
        }
        // начнем рисование, используя цвет заливки, заданный на входе прототипа
        this.clear();
        this.beginFill(fColor);
        // начнем рисование с правой стороны шлейфа (набор коодинат x0 и y0), передвинем текущую позицию
        // рисования в самый хвост
        this.moveTo(crd[0].x, crd[0].y);
        // переберем массив координат с первого до предпоследнего, соединим точки с помошью сплайна
        // (кривой Безье)
        // будем использовать "классический" метод рисования кривых, состоящих из нескольких сегментов
        for (var i = 1; i<(l-1); i++) {
          this.curveTo(crd[i].x0, crd[i].y0,
          (crd[i].x0+crd[i+1].x0)*.5,
          (crd[i].y0+crd[i+1].y0)*.5);
        }
        // завершим рисование правой стороны, проведя линию до начальной координаты шлейфа
        this.lineTo(crd[l-1].x, crd[l-1].y);
        // левую половину шлейфа нарисуем аналогично, только используя второй набор рассчитаных координат
        // x1 и y1
        // чтобы рисуемая форма была корректно залита флешем, начальная и конечная координаты у обоих
        // половин должны совпадать!
        this.moveTo(crd[0].x, crd[0].y);
        for (var i = 1; i<(l-1); i++) {
          this.curveTo(crd[i].x1, crd[i].y1,
          (crd[i].x1+crd[i+1].x1)*.5,
          (crd[i].y1+crd[i+1].y1)*.5);
        }
        this.lineTo(crd[l-1].x, crd[l-1].y);
        // завершим рисование, форма шлейфа готова
        this.endFill();
      };
};
// Осталась самая малость — создать пустой клип под шлейф и применить к нему прототип.
// var mc = this.createEmptyMovieClip("MagicMc", 0);
// mc.Magic(20, 8, 0xFF8080, 0xCC80CC);

Архив с исходными файлами смотрите ниже.
Исходник

Автор:Михаил Востриков

 
Smitg9Дата: Понедельник, 02.05.2011, 02:00 | Сообщение # 6
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
Загрузка внешней флешки:
Code

var loader:Loader = new Loader()  
var req = new URLRequest("test.jpg");  
loader.load(req);  
addChild(loader);
 
recklessДата: Вторник, 16.08.2011, 13:56 | Сообщение # 7
Группа: Гости





хуйня angry
 
Smitg9Дата: Вторник, 23.08.2011, 00:43 | Сообщение # 8
Подполковник
Группа: Администраторы
Сообщений: 109
Награды: 1
Репутация: 51
Статус: Offline
иди нахуй пидарбля angry
 
СвойДата: Суббота, 27.08.2011, 02:31 | Сообщение # 9
Группа: Гости





Quote (reckless)
хуйня angry
Quote (Smitg9)
иди нахуй пидарбля angry
Зачет!!!
applause
 
Форум » Флеш » Flash » Полезные скрипты (Здесь скрипты, которые могут быть полезнымы другим)
  • Страница 1 из 1
  • 1
Поиск:

portofollo.at.ua | Хостинг от uCoz