Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Чтобы класс работал (http://www.flasher.ru/forum/showthread.php?t=93983)

vitlance 02.04.2007 14:40

Чтобы класс работал
 
Для некоторых вопрос покажетса смешным, и простым.. Но т.к как я делаю всё без классов незнаю как же запустить вот этот класс:

Код:

class htest.Sprite extends MovieClip {
   
    public function Sprite() {
        super();
    }
   
    private function getMax(arr:Array):Number {
        var max:Number = arr[0];
        for(var i:Number = 1; i<arr.length; i++)
            if(arr[i]>max) max = arr[i];
        return max;
    }
   
    private function getMin(arr:Array):Number {
        var min:Number = arr[0];
        for(var i:Number = 1; i<arr.length; i++)
            if(arr[i]<min) min = arr[i];
        return min;
    }
   
    private function getOverlayArea(target:Sprite):Array {
        var area:Array = []; area[0] = {}; area[1] = {};
        area[0].x = getMax([this._x,target._x]);
        area[0].y = getMax([this._y,target._y]);
        area[1].x = getMin([this._x+this._width,target._x+target._width]);
        area[1].y = getMin([this._y+this._height,target._y+target._height]);
        return area;
    }
   
    public function overlayTest(target:Sprite):Boolean {
        var overlay:Boolean = false;
        if(this.hitTest(target)){
            var area:Array = getOverlayArea(target);
            var step:Number = 1;
            var y:Number = area[0].y;
            while(y<area[1].y){
                y+=step;
                var x:Number = area[0].x;
                while(x<area[1].x){
                    var test1:Boolean = this.hitTest(x,y,true);
                    var test2:Boolean = target.hitTest(x,y,true);
                    if(test1 && test2){
                        overlay = true;
                        return overlay;
                    }
                    x+=step;
                }
            }
        }
        return overlay;
    }

}

Это класс который проверяет hittest контура любой фигуры... Я хочу чтобы он работал в моей флэшки.. Т.е чтобы я отовсюду мог вызывать функцию overlayTest ... чтобы он работал вот так:
Код:

if (mc1.overlayTest(mc2)){
trace("ura");}


CorC 02.04.2007 18:02

нужно у определенного мувика в библиотеке
прописать в "AS 2.0 Class" что в linkage
имя этого класса "htest.Sprite" или как там,
а потом в коде после аттача можно будет
делать то что вы написали

vitlance 02.04.2007 21:15

окей... но это токо для одного обьекта... А если обьектов 1000, как задать класс глобально,для всего мува?

iNils 03.04.2007 01:52

То есть, вы хотите, чтобы все клипы в библиотеки использовали один класс, но не писать доя всеъ это в ручную?

vitlance 03.04.2007 07:00

именно

iNils 03.04.2007 15:08

Код:

var selItems = fl.getDocumentDOM().library.getSelectedItems();
var className = "htest.Sprite";
for (var i=0; i<selItems.length; i++){
        if (selItems[i].itemType != "folder") {
                var str = selItems[i].name.split ("/");
                var nm = str[str.length - 1];
                var id = fl.getDocumentDOM().library.findItemIndex(nm);
                fl.getDocumentDOM().library.items[id].linkageExportForAS = true;
                fl.getDocumentDOM().library.items[id].linkageIdentifier = nm;
                fl.getDocumentDOM().library.items[id].linkageClassName = className;
        }
}

Сохраните этот скрипт JSFL, указав в качесте className нужное имя класса с пакетом, поэтом в библиотеке выбрать необходимые клипы и запустить срипт Commands > Run Command...
Единственный не приятный момент, что визуально в библиотеке ничего не происходит, поэтому стоит выбрать один элемент, и выбрать его Linkage и нажать потом Ok, после чего у всех выбранных ранее элементов, в библиотеке появится имя линка.

vitlance 03.04.2007 16:00

ОтличнО!! Спасибо большое!


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

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