![]() |
|
||||||||||
|
|||||
|
[+ 06.08.11]
Регистрация: Jul 2011
Сообщений: 79
|
Здравствуйте.
Есть такой код: public class Main extends Sprite { [Embed("FormMain.xml", mimeType = "application/octet-stream")] private static const EmbedModel:Class; private var sc:Scene; public function Main() { var file:ByteArray = ((new EmbedModel()) as ByteArray); var str:String = file.readUTFBytes( file.length ); var xml:XML = new XML( str ); sc = new Scene(xml); stage.addChild(sc); var file:ByteArray = ((new EmbedModel()) as ByteArray); var str:String = file.readUTFBytes( file.length ); var xml:XML = new XML( str ); [Embed("FormMain.xml", mimeType = "application/octet-stream")] private static const EmbedModel:Class; private var sc:Scene; public function Main() { sc = new Scene(new EmbedModel()); stage.addChild(sc); Возможно ли такое? |
|
|||||
|
я же уже говорил конструктор класса Scene принимает XML.
что Вы уже пробовали сделать и что не получается(какие ошибки)?
__________________
местонахождение |
|
|||||
|
[+ 06.08.11]
Регистрация: Jul 2011
Сообщений: 79
|
В этом случае принимает XML ?
Вот такая ошибка: TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать Main_EmbedModel@86148c9 в XML. at Main() public function Scene (_xml:XML) { myxml = _xml; addEventListener(Event.ADDED_TO_STAGE, Init); } и уже в конструкторе сделать вызов функции: private function GetXml(/*КАКОЙ ТУТ ПАРАМЕТР ДОЛЖЕН БЫТЬ?*/):XML { var file:ByteArray = (/*new EmbedModel()*/ as ByteArray); var str:String = file.readUTFBytes( file.length ); var xml:XML = new XML( str ); } Последний раз редактировалось savva; 07.08.2011 в 21:37. |
|
|||||
|
[+ 06.08.11]
Регистрация: Jul 2011
Сообщений: 79
|
Сделал вот так:
но хочется чтобы было как можно меньше телодвижений. Чтобы просто прописать |
|
|||||
|
[+ 06.08.11]
Регистрация: Jul 2011
Сообщений: 79
|
Спасибо,я так и писал,просто не думал что можно будет сразу делать так :
Вопрос решён,спасибо. |
|
|||||
|
Никогда не делал через байтаррей. Решил провести тест.
public class xmlTest extends Sprite { [Embed(source = "example.xml", mimeType="application/octet-stream")] private static const EXAMPLE_XML: Class; public function xmlTest() { var start : Number; var now : Number; var counter : int; // test 1 start = getTimer(); for(counter = 0; counter < 10000; counter++){ getXML_1(); } now = getTimer(); trace("get xml var 1 time : " + (now - start)); // test 2 start = getTimer(); for(counter = 0; counter < 10000; counter++){ getXML_2(); } now = getTimer(); trace("get xml var 2 time : " + (now - start)); } private function getXML_1():XML{ return XML(new String(new EXAMPLE_XML())); } private function getXML_2():XML{ var file : ByteArray = new EXAMPLE_XML(); var str : String = file.readUTFBytes( file.length ); var xml : XML = new XML( str ); return xml; } если поменять тесты местами, то разрыв больше: Проводил тест раз 20, чтобы быть уверенным. Ввиду таких результатов по скорости мне кажется излишним возится с вариантом с ByteArray.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Не заметил таких фатальных провалов.
Вот результат: [ 1] Player: [WIN 10.3.181.34 RELEASE] [ 2] [ 3] Test started.. [ 4] get xml var 1 time : 13494 [ 5] get xml var 2 time : 13634 [ 6] get xml var 3 time : 10530 [ 7] Test finished. [ 8] [ 9] Test started.. [10] get xml var 1 time : 13759 [11] get xml var 2 time : 14040 [12] get xml var 3 time : 10593 [13] Test finished. [14] [15] Test started.. [16] get xml var 1 time : 13962 [17] get xml var 2 time : 14306 [18] get xml var 3 time : 10889 [19] Test finished. [20] [21] Test started.. [22] get xml var 1 time : 13994 [23] get xml var 2 time : 14086 [24] get xml var 3 time : 10624 [25] Test finished. /** * File created: '08.08.2011 8:11 AM' * * @author i.o. * @version 1.0 */ package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.system.Capabilities; import flash.text.TextField; import flash.text.TextFormat; import flash.utils.ByteArray; import flash.utils.getTimer; [SWF(width='800', height='600', scriptTimeLimit='300')] public class XmlCreationTest extends Sprite { [Embed(source = "example.xml", mimeType="application/octet-stream")] private static const EXAMPLE_XML_ASSET : Class; private static const EXAMPLE_XML_STRING : String = ((new EXAMPLE_XML_ASSET() as ByteArray).readUTFBytes((new EXAMPLE_XML_ASSET() as ByteArray).length)); public function XmlCreationTest() { if (stage) this._init(); else this.addEventListener(Event.ADDED_TO_STAGE, this._init); } /// private var _txtLog : TextField; /// private var _logMsgCount : uint = 0; /// private var _logMsgCountCharWidth : uint = 2; /// public function log( msg:String="" ) : void { this._logMsgCount++; var count:String = " " + this._logMsgCount.toString(); count = count.substr(count.length - this._logMsgCountCharWidth, this._logMsgCountCharWidth); this._txtLog.appendText((this._logMsgCount > 1 ? "\n" : "") + "[" + count + "] " + msg); } /// private function _init( e:Event=null ) : void { this.removeEventListener(Event.ADDED_TO_STAGE, this._init); // entry point this.stage.addEventListener(MouseEvent.CLICK, this._test); var tf:TextFormat = new TextFormat("Courier New", 11); this._txtLog = new TextField(); this._txtLog.x = 10.0; this._txtLog.y = 30.0; this._txtLog.width = 800.0 - 20; this._txtLog.height = 600.0 - 40; this._txtLog.border = true; this._txtLog.defaultTextFormat = tf; this._txtLog.setTextFormat( tf ); this.addChild( this._txtLog ); tf = new TextFormat("Arial", 16, 0xFF0000, true, true); var txtHeader:TextField = new TextField(); txtHeader.x = 10.0; txtHeader.y = 3.0; txtHeader.width = 800.0 - 20; txtHeader.height = 30; txtHeader.defaultTextFormat = tf; txtHeader.setTextFormat( tf ); txtHeader.text = "Click on screen to start a test."; this.addChild( txtHeader ); var playerVersion:String = Capabilities.version.replace(/,/g, '.'); var playerKind:String = Capabilities.isDebugger ? "DEBUG" : "RELEASE"; var playerInfo:String = "[" + playerVersion + " " + playerKind + "]"; txtHeader.appendText(" " + playerInfo); log("Player: " + playerInfo ); this._test(); } /// private function _test( ...args ) : void { log(); log("Test started.."); var start : Number; var now : Number; var counter : int; var targetLoops:int = 10000; // test 1 start = getTimer(); for(counter = 0; counter < targetLoops; counter++) getXML_1(); now = getTimer(); log("get xml var 1 time : " + (now - start)); // test 2 start = getTimer(); for(counter = 0; counter < targetLoops; counter++) getXML_2(); now = getTimer(); log("get xml var 2 time : " + (now - start)); // test 3 start = getTimer(); for(counter = 0; counter < targetLoops; counter++) getXML_3(); now = getTimer(); log("get xml var 3 time : " + (now - start)); log("Test finished."); } /// private function getXML_1() : XML { return XML(new String(new EXAMPLE_XML_ASSET())); } /// private function getXML_2() : XML { var file : ByteArray = new EXAMPLE_XML_ASSET(); var str : String = file.readUTFBytes( file.length ); var xml : XML = new XML( str ); return xml; } /// private function getXML_3() : XML { return new XML(EXAMPLE_XML_STRING); } } } example.rar
__________________
Загружаем картинки, минуя ошибки безопасности |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:32. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|