|
|
|||||
Регистрация: Aug 2010
Сообщений: 5
|
Error #1009 и Error #1088
Здравствуйте, дорогие форумчане!
Помогите, пожалуйста разобраться. Пишу флешку, где при нажатии на кнопочку из xmlки должно подтягиваться якобы предсказание на день, месяц, неделю или год(сами предсказания я пока заменила цыфрами), кнопок 4, обозначают они как раз день, неделю, месяц, год. Для каждой кнопки будет несколько предсказаний, предсказания выводятся при нажатии рандомно. package { import flash.events.MouseEvent; import flash.net.URLRequest; import flash.net.URLLoader; import flash.events.Event; import flashx.textLayout.accessibility.TextAccImpl; import flash.net.URLRequestMethod; import fl.events.*; import flash.display.MovieClip; public class SharikTest extends MovieClip { private var randomElement:Number; private var randomElementWeek:Number; private var randomElementMonth:Number; private var randomElementYear:Number; private var xml:XML; private var xmlList:XMLList; private var maxMes:uint; private var dayMessage : Array; public function SharikTest() { day_btn.addEventListener(MouseEvent.CLICK, onClick); loadXml(); } private function loadXMLList(e:Event):void{ var xml:XML=new XML(); var xmlList:XMLList=new XMLList(); var maxMes:uint=10; } private function loadXml(e:MouseEvent=null):void{ var xmlRequest:URLRequest=new URLRequest('day.xml'); var loader:URLLoader=new URLLoader(); loader.addEventListener(Event.COMPLETE, xmlLoaded); loader.load(xmlRequest); } private function xmlLoaded(e:Event):void{ xml=XML(e.target.data); xmlList=xml.children(); updateText(); } private function updateText():void{ day_txt.htmlText=''; var i:uint=0; if(xmlList.length()>maxMes) i=xmlList.length()-maxMes; for(i;i<xmlList.length(); i++){ //day_txt.htmlText+='<b>'+ xmlList[i].name+'</b>('+xmlList[i].date+'):'; day_txt.htmlText+=' '+ xmlList[i].text; } var newXml:XML=XML('<dayMessage>'+randomElement+'</dayMessage><weekMessage>'+randomElementWeek+'</weekMessage><monthMessage>'+randomElementMonth+'</monthMessage>'+randomElementYear+'<yearMessage></yearMessage>'); trace(newXml); var phpRequest:URLRequest = new URLRequest('messanges.php'); phpRequest.data=newXml; phpRequest.contentType='text/xml'; phpRequest.method=URLRequestMethod.POST; var phpLoader:URLLoader = new URLLoader(); phpLoader.addEventListener(Event.COMPLETE, xmlSended); phpLoader.load(phpRequest); } private function xmlSended(e:Event):void{ loadXml(); } //день private function onClick(e:MouseEvent):void { var randomElement:Number = Math.floor(Math.random()*dayMessage.length); day_txt.text = dayMessage [randomElement]; } public function XMLTest() { var daysMessages : Array = splitChildItems(xml, "dayMessage"); trace (daysMessages[int(Math.random() * (daysMessages.length-1))]); } private function splitChildItems(xml : XML, childName : String) : Array { var result : Array = []; var object : Object; var regexp : RegExp = /\"([^\"]+)\"/g; while (object = regexp.exec(String(xml[childName]))) { result[result.length] = object[1]; } return result; } } } TypeError: Error #1088: Разметка в документе, следующим за корневым элементом, должна быть в правильном формате. at SharikTest/updateText() at SharikTest/xmlLoaded() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete() TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at SharikTest/onClick() |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
По поводу разметки, очевидно, что вы работаете с не валидным XML. Используйте метод toXMLString(), чтобы ее проверить.
Вообще, при работе с XML настоятельно рекомендую использовать try/catch, ибо случаи не валидности довольно часто встречаются. По поводу null, очевидно что либо day_txt, либо dayMessage у вас == null, когда вызывается метод onClick.
__________________
#flasher@irc.trg.ru:6667 |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Он в принципе вродь валидный, но в обьект типа XML можно конвертить только xml с одним тегом в корне, а там их много. Используйте XMLList для такого
а вообще не видны попытки разобраться, таким помогать неинтересно
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 10.09.2010 в 12:55. |
|
|||||
Регистрация: Aug 2010
Сообщений: 5
|
вот попыталась немного подправить код, пока пытаюсь сделать кнопку с подгрузкой предсказания для одного элемента.
package { import flash.events.MouseEvent; import flash.net.URLRequest; import flash.net.URLLoader; import flash.events.Event; import flashx.textLayout.accessibility.TextAccImpl; import flash.net.URLRequestMethod; import fl.events.*; import flash.display.MovieClip; public class SharikTest extends MovieClip { private var randomElement:Number; private var xml:XML; private var xmlList:XMLList; private var maxMes:uint; private var dayMessage : Array; public function SharikTest() { day_btn.addEventListener(MouseEvent.CLICK, onClick); loadXml(); } private function loadXMLList(e:Event):void{ var xml:XML=new XML(); var xmlList:XMLList=new XMLList(); var maxMes:uint=10; } private function loadXml(e:MouseEvent=null):void{ var xmlRequest:URLRequest=new URLRequest('day.xml'); var loader:URLLoader=new URLLoader(); loader.addEventListener(Event.COMPLETE, xmlLoaded); loader.load(xmlRequest); } private function xmlLoaded(e:Event):void{ xml=XML(e.target.data); xmlList=xml.children(); updateText(); } private function updateText():void{ day_txt.htmlText=''; var i:uint=0; if(xmlList.length()>maxMes) i=xmlList.length()-maxMes; for(i;i<xmlList.length(); i++){ //day_txt.htmlText+='<b>'+ xmlList[i].name+'</b>('+xmlList[i].date+'):'; day_txt.htmlText+=' '+ xmlList[i].text; } var newXml:XMLList = XMLList('<dayMessage>'+randomElement+'</dayMessage>'); trace(newXml); //день private function onClick(e:MouseEvent):void { var randomElement:Number = Math.floor(Math.random()*dayMessage.length); day_txt.text = dayMessage [randomElement]; } public function XMLTest() { var daysMessages : Array = splitChildItems(xml, "dayMessage"); trace (daysMessages[int(Math.random() * (daysMessages.length-1))]); } private function splitChildItems(xml : XML, childName : String) : Array { var result : Array = []; var object : Object; var regexp : RegExp = /\"([^\"]+)\"/g; while (object = regexp.exec(String(xml[childName]))) { result[result.length] = object[1]; } return result; } } } } <?xml version="1.0" encoding="utf-8"?> <day> <dayMessage>"Да","Нет","Не знаю"</dayMessage> </day> N:\флеш\учусь\шар\SharikTest.as, Line 64 1013: The private attribute may be used only on class property definitions. N:\флеш\учусь\шар\SharikTest.as, Line 71 1114: The public attribute can only be used inside a package. N:\флеш\учусь\шар\SharikTest.as, Line 76 1013: The private attribute may be used only on class property definitions. |
Часовой пояс GMT +4, время: 23:59. |
|
« Предыдущая тема | Следующая тема » |
|
|