Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как подгружать скрипты в основной код из *.as файлов ? (http://www.flasher.ru/forum/showthread.php?t=145113)

iillyyaa 29.09.2010 17:06

Как подгружать скрипты в основной код из *.as файлов ?
 
вот понадобилось мне рости в познаниях флеша, кода стало больше.. решил, лучше разделить его на части и каждую "основную" часть засунуть в отдельный файл..

в самом fly файле у меня нет ни строчки кода (analiz.fla)
рядом лежит файл analis.as, который подгружается "сам"
внутри analis.as

Код AS3:

package {
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
        import flash.filters.GlowFilter;
        import flash.utils.*;
        public class analiz extends MovieClip {
                public function analiz() {
                trace('превед');
                tratata();
        }
}

вот хочу выдернуть одну функцию из основного кода и засунуть в файл fun1.as

вопросы, что должно быть в файле fun1.as ? только та функция ? или что то ещё ?
как и где мне подгрузить файлик fun1.as ?
функцию из этого файлика я вызывать планирую в коде в основном файле analis.as

скажем содержимое fun1.as
Код AS3:

private function tratata() {
        trace('tratata');
}

верно ? или что то ещё должно быть в нём ?

Добавлено через 5 часов 44 минуты
что, все считают, что вопрос нубский ? или что ? ну я реально не знаю.. и где прочесть, так что бы понять не перечитав сотни разных страниц не знаю.. да и везде расплывчато написано, нужно понимать половину уже :)

samana 30.09.2010 11:38

Я как всегда не уверен в правильности вопроса, но если хотите создать глобальную функцию, что-бы вызвать её где угодно, как например trace(), то создайте *as файл с таким же именем как и функция, такого вида:
Код AS3:

package {
        public function tratata() {
                trace("tra-ta-ta");
        }
}

tratata.as
И вызывайте её где хотите.

iillyyaa 30.09.2010 14:27

а как же этот файл сам прикрепится к нужному fly ?

у меня есть код чужой прокрутки, там в основном кадре fly файла указан код

Код AS3:

import gui.Scroller;

в папке gui лежит файл Scroller.as с содержимым

Код AS3:

package gui{
        import flash.display.MovieClip;
        import flash.events.Event;
        public class Scroller extends MovieClip{
                public function Scroller(_mc:MovieClip,_hght:Number):void{

вот если у меня в основном коде уже есть описание того, что я импортирую, потом видимо вызываю подгрузку .as, вот в каждом .as нужно указывать что импортировать ? или достаточно просто функцию сразу писать ?

AlesNormales 30.09.2010 14:45

каждому *.as файлу нужно указыать что импортировать. Кроме того что объявлено в одном с ним пакете.
Как крепится к fla? Если имеется ввиду класс документа, то он указывается относительно самого fla. Если лежит в одной с ним папке-то просто имя класса. если в другой папке-то пакет.имя_класса, если вложенность то пакет.пакет...пакет.имя_класса.

AlesNormales 30.09.2010 15:15

Вложений: 1
я попытался это изобразить (кроме paint под рукой ничего не было). Черные "прямоугольники" это папки. В красной рамке-файлы.

Wolsh 30.09.2010 15:39

package dc
package dc.pak
package dc.pak.pak1

iillyyaa 30.09.2010 15:47

так а где его подгружать ?
есть у меня analiz.fla и analiz.as

тут нужно указывать в analiz.as подгрузку tratata.as ? (tratata.as я положу туда же где analiz.fla и analiz.as)

Код AS3:

package {
        import flash.display.*;
 
        import tratata;
 
        public class analiz extends MovieClip {
                public function analiz() {
                trace('превед');
                tratata();
        }
}

и я так понимаю, если нового ничего мне не нужно подгружать, то в tratata.as я ничего не импортирую..

Код AS3:

package {
        public function tratata() {
                trace("tra-ta-ta");
        }
}

всё верно ?

Добавлено через 9 минут
или надо:

Код AS3:

package {
        public class tratata extends MovieClip{
                public function tratata() {
                        trace("tra-ta-ta");
                }
        }
}

или если там просто функция, то так ?
Код AS3:

package {
        public class tratata{
                public function tratata() {
                        trace("tra-ta-ta");
                }
        }
}


AlesNormales 30.09.2010 15:58

Wolsh спасибо что поправили.

Верно. у Вас же все в одном безымянном пакете. Импортировать (или как вы говорите подгружать) друг друга вашим файлам не надо. Они уже логически объединены. Можете просто пользоваться функцией тартата. А вот если функции из файлов анализ и тратата используют другие пакеты, то в каждом файле нужен будет импорт этих пакетов. например если анализ и тратата оба используют спрайт, то этот импорт должен быть и в одном и в другом файле. Все что вам надо сделать-это указать классом докумена - analiz.

iillyyaa 30.09.2010 16:13

1136: Неправильное количество аргументов. Ожидается 1.

жалуется на вызов функции tratata(); в основном коде файла tra.as

файл tra.as

Код AS3:

package {
        import flash.display.*;
        import flash.text.*;
        public class tra extends MovieClip {
                public function tra() {
                        trace('превед');
                        tratata();
 
                }
        }
}

файл tratata.as

Код AS3:

package {
        import flash.display.*;
        import flash.text.*;
        public class tratata extends MovieClip {
                public function tratata() {
                        trace('тратата');
                }
        }
}


AlesNormales 30.09.2010 16:18

ну так Вы тратата классом сделали и функцию не вызываете, пишите теперь new tratata(), вызовете конструктор, которые напишет таки тратата

Код AS3:

public class tra extends MovieClip {
private var tr:tratata = new tratata();



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

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