Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.09.2010, 04:46
Mrink вне форума Посмотреть профиль Отправить личное сообщение для Mrink Найти все сообщения от Mrink
  № 1  
Ответить с цитированием
Mrink

Регистрация: 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()

Старый 10.09.2010, 12:42
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 2  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
По поводу разметки, очевидно, что вы работаете с не валидным XML. Используйте метод toXMLString(), чтобы ее проверить.
Вообще, при работе с XML настоятельно рекомендую использовать try/catch, ибо случаи не валидности довольно часто встречаются.

По поводу null, очевидно что либо day_txt, либо dayMessage у вас == null, когда вызывается метод onClick.
__________________
#flasher@irc.trg.ru:6667

Старый 10.09.2010, 12:53
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 3  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Он в принципе вродь валидный, но в обьект типа XML можно конвертить только xml с одним тегом в корне, а там их много. Используйте XMLList для такого
Код AS3:
var newXml:XMLList = XMLList ('<dayMessage>'+randomElement+'</dayMessage><weekMessage>'+randomElementWeek+'</weekMessage><monthMessage>'+randomElementMonth+'</monthMessage>'+randomElementYear+'<yearMessage></yearMessage>');
а вообще не видны попытки разобраться, таким помогать неинтересно
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 10.09.2010 в 12:55.
Старый 10.09.2010, 15:13
Mrink вне форума Посмотреть профиль Отправить личное сообщение для Mrink Найти все сообщения от Mrink
  № 4  
Ответить с цитированием
Mrink

Регистрация: 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ка

Код:
<?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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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