PDA

Просмотр полной версии : ООП


TbIKBA
12.05.2004, 20:16
ДОБРЫЕ Люди!!!!
Спасите мою голову!!!
Всю жизь писал АС и не парился! Писал так чтоб работало - никаких функций, определений объектов, тем более классов!

И тут сорвало мне голову...
нарвался на www.flash-ripper.com (http://www.flash-ripper.com)
пока не разберузззь не успакоюзззь - как етот Обджект Ориентал работает...

Все понятно вроде когда чужой код читаешь - а когда свой начинаю писать вопросов в голове такое кол-во, что я себя первоклассником чуйствую!!!

Подскажите где в сети почитать про Обджект Ориентал Пр.
а то денег нет за книжкой бежать...

..............................................................................................

Если вдуг у кого время есть помогите с примером...
Задача такая:

Есть n файлов/слоёв(кол-во их конечно может меняться иначе зачем етот ООП - пользовать так по полной ;) )
backGround
percent
logo
menu
text
foto
...

хотелось бы в main файле, куда будут грузиться ети файлы ограничется вызовом функции (назовём её createLayer)
которая будет:
1. создовать v _root мувик с именем файла (учитывая _depth в порядке вызова функции)
2. грузить туда етот файл
3. отслеживать его загрузку (запуская по setInterval другую Фу-ю )
4. запуская еще одну Фу-ю высчитывать общий % всех загружаемых файлов
5. передавать етот процент в _root.percent (тот самый уже загруженный файл)


вот с чего я начал:

createLayer.as:
var Layers = 0;
var interval;
var percent;
function createLayer(object_name) {
Layers++;
_root.createEmptyMovieClip(object_name, Layers);
loadMovie(object_name+".swf", "_root."+object_name);
interval = setInterval(percent=Preload, 1000, object_name);
}
function Preload(object_name) {
return _root[object_name].getBytesLoaded()/_root[object_name].getBytesTotal()*100;
}


main.fla:
#include " createLayer.as"
createLayer("backGround");
createLayer("percent");
createLayer("logo");
createLayer("menu");
createLayer("text");
createLayer("foto");


грузить файлы получается - правдо чую что через Ж... я это делаю...
а вот куда лучше сохранять етот процент пока сам лаер не подгрузился?? наверное лучше создать обект Preload и в нем хранить о общий просент и процент каждого лаера...

+ неполучается создать в каждом МС его порядковый номер Ж (
+ непонимаю как создать объект Preload с переменными и для общего и для каждого лаера: ((
+ непонимаю как передовать эти подсчитанные переменные из этих функций в этот Preload!

HELP PLEASE!!!

Dindin
13.05.2004, 12:16
http://www.bruceeckel.com/ - один из самых уважаемых мною авторов книг по ООП. В том числе моей любимой "Философия Java" ("Thinking in Java")
Второй вопрос (вопросы?): _root.createEmptyMovieClip(object_name, Layers++); - приращение номера Layer (кстати, в ООП с большой буквы предположительно начинаются названия классов)
Совет - создай объект, в этом объекте создай ассоциированный массив, в котором каждому названию объекта соответствует его глубина:
obj = {name1:depth1,name2:depth2}
trace (obj["name1"];)

Или простой массив, в котором для соответствующего индекса глубины задавай строку-имя:arr = [];
arr[depth1] = "name1";
arr[depth2] = "name2";
И дергай значения из этих массивов.

TbIKBA
13.05.2004, 19:53
В объекте site есть Array layerName с именами моих лайеров.

_root[site.layerName[count]].getBytesTotal() выводит underfined

???? опять незнаю синтаксис!

Dindin
14.05.2004, 14:14
site = {layerName:['name1','name2'],layerSurname:[]};
count=0;
_root.createEmptyMovieClip('name1',1);

with(_root[site.layerName[count]]){
lineStyle(3,0xff0000,100);
moveTo (30,30);
beginFill(0xaaaaaa,100);
lineTo (80,80);
lineTo (80,30);
lineTo (30,30);
endFill();
}
Все работает, просто элемент массива layerName[] должен быть строкой.

Baltika
14.05.2004, 15:24
Оригинал написал(а) TbIKBA

Подскажите где в сети почитать про Обджект Ориентал Пр.
а то денег нет за книжкой бежать...


классика (http://www.nexus.odessa.ua/files/books/booch/index.htm)

Dindin
14.05.2004, 17:28
хорошая ссылка. особенно впечатляет библиография (http://www.nexus.odessa.ua/files/books/booch/biblio.htm)
:):)