当我启动应用程序时出现此错误(闪存类型解除所有并继续)并且我没有想法:
TypeError:错误#1009:无法访问 null对象的属性或方法 参考。在 Magazin的/ xmlService_resultHandler()[d:\文件 和设置\ chechu \ Adobe Flash Builder 4 \ Magazin \ src \ Magazin.mxml:41] 在 Magazin的/ __ xmlService_result()[d:\文件 和设置\ chechu \ Adobe Flash Builder 4 \ Magazin \ src \ Magazin.mxml:64] 在 flash.events::EventDispatcher/dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent() 在 HTTPOperation / http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\ dev的\ 4.x的\框架\项目\ RPC \ SRC \ MX \ RPC \ HTTP \ HTTPService.as:989] 在 mx.rpc :: AbstractInvoker / http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\ dev的\ 4.x的\框架\项目\ RPC \ SRC \ MX \ RPC \ AbstractInvoker.as:318] 在 mx.rpc ::响应/结果()[E:\ dev的\ 4.x的\构架\项目\ RPC \ SRC \ MX \ RPC \ Responder.as:56] 在 mx.rpc :: AsyncRequest /确认()[E:\ dev的\ 4.x的\框架\项目\ RPC \ SRC \ MX \ RPC \ AsyncRequest.as:84] 在 DirectHTTPMessageResponder /在completeHandler()[E:\ dev的\ 4.x的\构架\项目\ RPC \ SRC \ MX \消息\通道\ DirectHTTPChannel.as:446] 在 flash.events::EventDispatcher/dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent() 在flash.net::URLLoader/onComplete()
主要应用:
import events.ProductEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import valueObject.ImageClass;
[Bindable]
public var imagesCollection:ArrayCollection;
protected function xmlService_faultHandler(event:FaultEvent):void
{
Alert.show("meeah");
}
protected function xmlService_resultHandler(event:ResultEvent):void
{
var imageCollection:ArrayCollection=event.result.Images.image ;
var imData:ImageClass;
for each(var im:Object in imageCollection)
{
imData=new ImageClass();
imData.url=im.url;
imData.big_url=im.big_url;
imData.cat=im.cat;
imData.descript=im.descript;
imData.price=im.price;
imagesCollection.addItem(imData); line:41
}
Alert.show("gg");
}
[Bindable]
public var mama:ArrayCollection=new ArrayCollection();
protected function gallery1_addToCartHandler(event:ProductEvent):void
{
mama.addItem(event);
currentState="cart";
}
]]>
</fx:Script>
<s:states>
<s:State name="normal"/>
<s:State name="cart"/>
</s:states>
<fx:Declarations>
<s:HTTPService id="xmlService" line 64
url="dataXml/pics.xml" fault="xmlService_faultHandler(event)"
result="xmlService_resultHandler(event)"/>
</fx:Declarations>
<components:Gallery imagesArray="{imagesCollection}" addToCart="gallery1_addToCartHandler(event)" />
<components:cart x="500" y="300" itemRenderer="components.CartRenderer" dataProvider="{mama}" />
</s:Application>
图库组件:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Metadata>
[Event(name="addToCart",type="events.ProductEvent")]
</fx:Metadata>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import events.ProductEvent;
import mx.collections.ArrayCollection;
import valueObject.ImageClass;
[Bindable]
public var imagesArray:ArrayCollection;
public function goa_clickHandler(event:MouseEvent):void
{
for (var i:uint=0; i<imagesArray.length;i++)
{
var objEvent:ProductEvent=new ProductEvent("addToCart",true);
objEvent.imData=imagesArray[i] ;
dispatchEvent(objEvent);
}
}
]]>
</fx:Script>
<s:SkinnableDataContainer id="cont" dataProvider="{imagesArray}">
<s:itemRenderer >
<fx:Component>
<s:ItemRenderer>
<s:HGroup>
<s:Label id="gagal" text="{data.price}"/>
<mx:Image source="{data.url}" width="50" height="50" />
<s:Button id="goa" label="buy" click="outerDocument.goa_clickHandler(event)"/>
</s:HGroup>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:SkinnableDataContainer>
</s:Group>
ProductEvent类:
package events
{
import flash.events.Event;
import valueObject.ImageClass;
[Bindable]
public class ProductEvent extends Event
{
public var imData:ImageClass;
public function ProductEvent(type:String,bubbles:Boolean=true)
{
super(type,bubbles);
}
override public function clone():Event
{
var eventOb:ProductEvent=new ProductEvent(type,bubbles);
eventOb.imData=this.imData;
return eventOb;
}
}
ImageClass:
package valueObject
{
[Bindable]
public class ImageClass
{
public var url:String;
public var big_url:String;
public var descript:String;
public var price:String;
public var cat:String;
public function ImageClass()
{
/*this.url=url;
this.big_url=big_url;
this.descript=descript;
this.price=price;
this.cat=cat;*/
}
}
}
和xml:
<?xml version="1.0"?>
<Images>
<image>
<url>poze/pics/IMG_1163.jpg</url>
<big_url>poze/big_pics/IMG_1163.jpg </big_url>
<descript>P</descript>
<price>99.99</price>
<cat>A</cat>
</image>
<image>
<url>poze/pics/IMG_1175.jpg</url>
<big_url>poze/big_pics/IMG_1175.jpg</big_url>
<descript>U</descript>
<price>99.99</price>
<cat>A</cat>
</image>
<image>
<url>poze/pics/IMG_1186.jpg</url>
<big_url>poze/big_pics/IMG_1186.jpg</big_url>
<descript>L</descript>
<price>99.99</price>
<cat>A</cat>
</image>
答案 0 :(得分:3)
您正在访问第41行中的imagesCollection
变量,但尚未对其进行初始化 - 它仍然包含null
要么改变
[Bindable]
public var imagesCollection:ArrayCollection;
到
[Bindable]
public var imagesCollection:ArrayCollection = new ArrayCollection();
或添加
imagesCollection = new ArrayCollection();
到xmlService_resultHandler
方法的开头。
答案 1 :(得分:1)
记住...
每当存在空引用错误时,您需要初始化您正在使用的变量。
假设您使用的是Array
或ArrayCollection
yourArrayVarriable = new Array();
或yourArrayCollectionVarriable = new ArrayCollection();
然后开始使用yourArrayVarriable
或yourArrayCollectionVarriable
来存储值