Форум 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=152543)

Alexvblbl 19.03.2011 15:48

Универсальный движок
 
Такой вопрос.

Есть флеш "полотно" размером 600 px на 800 px, он когда запускается читает файл config.txt (это может быть и xml главное что бы работало), с данными для расстановки объектов на сцене.

Объекты должны иметь такие значения:

Видимость (_visible)
Активность (при попадании курсора или при нажатии на этот объект, будет ли он активным, или ничего не произойдет)
URL картинки (в объект подгружается картинка, или атачится объект из библиотеки)
Позиция X,Y (ну как бы основное - где будет размещен полученный объект)
ID объекта (Ну как бы его индивидуальное имя по которому будет происходить событие ... см. дальше )
Тип (Тип объекта ну например Квадратик, или там точка, или окружность)
Событие (Ну самое основное событие, то, что будет происходить по наведению или нажатию на этот объект)

Ну пример такой:
config.txt:
visible=true
active=true
URL=http://flasher.ru
position:
x=240;
y=155;
ID=1;
type=circle;
actions:
onRollOver=none;
onRollOut=none;
onRelease=(передать координаты объекта);
onReleaseOutside=(передать координаты объекта);
onPress=(передать координаты объекта);

Вопросы:
Как описать такие объекты?
Как сделать некую базу таких опций на объектах (Ну сами объекты и их опции можно прописывать прям во флеш ролике)?
Как настроить считывание с файла и определения опций на объекте?

Haiat 19.03.2011 16:06

Код:

onRelease=(передать координаты объекта);
onReleaseOutside=(передать координаты объекта);
onPress=(передать координаты объекта);

должны изменяться координаты объекта?

Alexvblbl 19.03.2011 16:17

Цитата:

Сообщение от Haiat (Сообщение 981823)
Код:

onRelease=(передать координаты объекта);
onReleaseOutside=(передать координаты объекта);
onPress=(передать координаты объекта);

должны изменяться координаты объекта?

Нет, просто должно передаваться в тот же документ (config.txt) или в другой какой нибудь, координаты объекта под ID=(каким то, смотря на какой нажат).

Haiat 19.03.2011 16:50

делайте лучше xml.

Цитата:

Вопросы:
Как описать такие объекты?
Как сделать некую базу таких опций на объектах (Ну сами объекты и их опции можно прописывать прям во флеш ролике)?
Как настроить считывание с файла и определения опций на объекте?
1) разбираете xml, в зависимости от значений параметров, создаете нужные элементы (или из библиотеки аттачите), и прописываете им нужные параметры

2) база объектов и будет Ваш XML файл, который Вы подгружаете, ну или можете массив со ссылками на уже готовые элементы создать

3)
Код AS1/AS2:

data_xml = new XML();
                data_xml.ignoreWhite = true;
                data_xml.load("data.xml");
                data_xml.onLoad = function() {
 
                };


Alexvblbl 19.03.2011 17:12

Ок я получил объект с данными из XML файла (кста подскажите хоть один пример работы с XML).

Далее а всё таки выберу метод аттач.

Как примерно будет выглядеть код, если получил вот такое значение:

ID=1 (в библиотеке есть объект с именем ID1)
posX=100(позиция по иксу);
posY=260(позиция по игрику);
vis=da(Видимость объекта - Видимый);
acti=da(Активность элемента - Да);
sil=1.jpg(Загрузить картинку которая лежит в корне папки под именем - "1.jpg")
sob=onPress - getURL("http://flasher.ru") - (Наложить на объект событие onPress с выполнением действий "getURL("http://flasher.ru")")

Haiat 19.03.2011 17:55

Код:

<?xml version="1.0" encoding="UTF-8"?>
<data>
 <gallery>
  <album name="1">
  <img name="1" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="2" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="3" small="asdasd.jpg" big="weqwe.jpg" />
    .....
  </album>
  <album name="2">
  <img name="1" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="2" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="3" small="asdasd.jpg" big="weqwe.jpg" />
    .....
  </album>
  ......
 </gallery>
</data>

Код AS1/AS2:

for(i=0;i<_root.data_xml.childNodes[0].childNodes[0].childNodes.length;i++){
  trace(_root.data_xml.childNodes[0].childNodes[0].childNodes[i].attributes.name);
}


Alexvblbl 19.03.2011 18:14

Цитата:

Сообщение от Haiat (Сообщение 981856)
Код:

<?xml version="1.0" encoding="UTF-8"?>
<data>
 <gallery>
  <album name="1">
  <img name="1" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="2" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="3" small="asdasd.jpg" big="weqwe.jpg" />
    .....
  </album>
  <album name="2">
  <img name="1" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="2" small="asdasd.jpg" big="weqwe.jpg" />
  <img name="3" small="asdasd.jpg" big="weqwe.jpg" />
    .....
  </album>
  ......
 </gallery>
</data>

Код AS1/AS2:

for(i=0;i<_root.data_xml.childNodes[0].childNodes[0].childNodes.length;i++){
  trace(_root.data_xml.childNodes[0].childNodes[0].childNodes[i].attributes.name);
}


Супер! То, что нужно спасибо. Правда ещё будут вопросы :)

Добавлено через 1 час 27 минут
Есть такая функция:

Код AS1/AS2:

data_xml = new XML();
                data_xml.ignoreWhite = true;
                data_xml.load("data.xml");
                data_xml.onLoad = function() {
                        //objname = _root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.name
                        ID1 = _root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.id
                        trace(ID1)
                        movie1=_root.attachMovie("ID"+ID1, objname, this.getNextHighestDepth());
                        //trace(_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.posX)
                        movie1._x=_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.posX;
                        trace(movie1)
                        movie1._y=_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.posY;
                        movie1._visible=_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.vis;
                        movie1.loadMovie(_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.ssil, objname)
                        movie1.onRelease = function () {
                                if (_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.sobONPRESS) {
                                getURL(_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.sobONPRESS);
                                }
                        }
                        trace(_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1]);
                        //trace(_root.data_xml.nodeValue[0])
                };

Не работает функция onRelease - не реагирует вообще.
И ещё вопрос почему я не могу обращаться так
Код AS1/AS2:

objname._visible=_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.vis;

?

Haiat 21.03.2011 12:30

Код:

//objname = _root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.name
                        ID1 = _root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.id
                        trace(ID1)
                        movie1=_root.attachMovie("ID"+ID1, objname, this.getNextHighestDepth());

у вас objname закоментирован, а Вы его используете.

Код:

И ещё вопрос почему я не могу обращаться так
а что дает trace(_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.vis)?

Alexvblbl 21.03.2011 12:46

Цитата:

а что дает trace(_root.data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[1].attributes.vis)?
output:
true

Haiat 21.03.2011 13:15

наверно у вас не работает по той причине, которую я уже указал:

Код:

у вас objname закоментирован, а Вы его используете.


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

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