Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Error #1009 и Error #1088 (http://www.flasher.ru/forum/showthread.php?t=144361)

Mrink 10.09.2010 04:46

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()


Obi 10.09.2010 12:42

По поводу разметки, очевидно, что вы работаете с не валидным XML. Используйте метод toXMLString(), чтобы ее проверить.
Вообще, при работе с XML настоятельно рекомендую использовать try/catch, ибо случаи не валидности довольно часто встречаются.

По поводу null, очевидно что либо day_txt, либо dayMessage у вас == null, когда вызывается метод onClick.

-De- 10.09.2010 12:53

Он в принципе вродь валидный, но в обьект типа XML можно конвертить только xml с одним тегом в корне, а там их много. Используйте XMLList для такого
Код AS3:

var newXml:XMLList = XMLList ('<dayMessage>'+randomElement+'</dayMessage><weekMessage>'+randomElementWeek+'</weekMessage><monthMessage>'+randomElementMonth+'</monthMessage>'+randomElementYear+'<yearMessage></yearMessage>');

а вообще не видны попытки разобраться, таким помогать неинтересно

Mrink 10.09.2010 15:13

вот попыталась немного подправить код, пока пытаюсь сделать кнопку с подгрузкой предсказания для одного элемента.

Код:

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ка

Код:

<?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, время: 08:29.

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