PDA

Просмотр полной версии : Открыть, прочитать файл и создать мувиклип


Likoniko
10.04.2011, 19:34
Идея такая : У меня в файле написано
{
news1
}
{
news2
}
и.т.д

Надо чтоб когда открывалась скобка , флэш создовал мувиклип и внутрь мувиклипа (в текстфилд ) вписовал бы то что должно было вместо news. Проблема в том, как рассположить мувиклипы друг под другом и как вписывать в поля? Не ну понятно что прировнять результат к полю, а если мне надо динамично? Не залезать же в флэш и создовать каждый раз новое поле.

i.o.
10.04.2011, 19:51
ну как вариант (не самый плохой), вместо фигурных скобок воспользоваться форматом данных XML

Likoniko
10.04.2011, 19:56
дайте пример пожалуйста, я вообще 0

i.o.
10.04.2011, 19:58
<?xml version='1.0' encoding='UTF-8'?>
<news>
<newsBlock>Новостной блок номер 1</newsBlock>
<newsBlock>Новостной блок номер 2</newsBlock>
</news>

Likoniko
10.04.2011, 20:24
попробую ну а что это изменит?

Psycho Tiger
10.04.2011, 21:13
Вам не придётся писать собственный парсер, к примеру.

carrotoff
10.04.2011, 21:13
попробую ну а что это изменит?

В первую очередь, изменит это подход с Вашего на человеческий.

а если мне надо динамично? Не залезать же в флэш и создовать каждый раз новое поле.

Ну вся идея как раз в том и состоит, что вы прогружаете XML, считаете сколько Вам необходимо блоков, и создаете их. И редактировать (надеюсь, формировать динамически) нужно будет именно XML, а не трогать код AS

Psycho Tiger
10.04.2011, 22:02
Искренни надеюсь что этот пример, состряпанный на скорую руку Вам поможет.
public function test() {
var xml:XML = new SomeXML();
var xmlNodes:XMLList = xml.newsBlock;
var i:int = xmlNodes.length();
while (i--) {
var clip:MovieClip = new SomeClip();
var textField:TextField = clip.getChildByName("someTextField") as TextField;
textField.text = xmlNodes[i].toString();
clip.x = 100 * i;
addChild(clip);
}
}

i.o.
10.04.2011, 22:19
Main.as:

package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.text.TextField;

public class Main extends Sprite
{
public function Main()
{
var urlLoader:URLLoader = new URLLoader(new URLRequest("news.xml"));
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, _onXmlLoaded)
}

private function _onXmlLoaded(e:Event):void
{
var xml:XML = new XML((e.target as URLLoader).data);

_buildTextFiels( xml.news.newsBlock );
}

private function _buildTextFiels( newsBlocks:XMLList ):void
{
var i:int = -1;
var l:int = newsBlocks.length();
while( ++i < l )
{
var txtNews:TextField = new TextField();
txtNews.width = 400;
txtNews.height = 40;
txtNews.border = true;
txtNews.text = newsBlocks[i];

var mcNewsContainer:MovieClip = new MovieClip();
mcNewsContainer.x = 10;
mcNewsContainer.y = 10 + 50 * i;
mcNewsContainer.addChild( txtNews );

this.addChild( mcNewsContainer );
}
}
}
}


news.xml:

<?xml version="1.0" encoding="utf-8" ?>
<data>
<news>
<newsBlock>Новостной блок номер 1</newsBlock>
<newsBlock>Новостной блок номер 2</newsBlock>
<newsBlock>Новостной блок номер 3</newsBlock>
</news>
</data>

Likoniko
11.04.2011, 08:40
всем спасибо

Добавлено через 24 минуты
как только добавить свой мувиклип?

Добавлено через 11 часов 44 минуты
помогите вставить свой мувиклип