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

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

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

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
По умолчанию Чтобы класс работал

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

Код:
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");}

Старый 02.04.2007, 18:02
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 2  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
нужно у определенного мувика в библиотеке
прописать в "AS 2.0 Class" что в linkage
имя этого класса "htest.Sprite" или как там,
а потом в коде после аттача можно будет
делать то что вы написали
__________________
"We Are The Champions My Friends!" Queen

Старый 02.04.2007, 21:15
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 3  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
окей... но это токо для одного обьекта... А если обьектов 1000, как задать класс глобально,для всего мува?

Старый 03.04.2007, 01:52
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
То есть, вы хотите, чтобы все клипы в библиотеки использовали один класс, но не писать доя всеъ это в ручную?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 03.04.2007, 07:00
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 5  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
именно

Старый 03.04.2007, 15:08
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
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, после чего у всех выбранных ранее элементов, в библиотеке появится имя линка.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 03.04.2007, 16:00
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 7  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
ОтличнО!! Спасибо большое!

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

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

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


 


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


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