2012-07-09 96 views
0

我新的闪光灯和我真的不知道什么是我得到这个错误的原因:类型错误:错误#2007:参数文字必须为非空

TypeError: Error #2007: Parameter text must be non-null.
at flash.text::TextField/set text()
at sgmap_fla::MainTimeline/mapOver()

我的动作:

description.countryName_txt.text = ""; 
description.zone_txt.text = ""; 

map_mc.buttonMode=true; 

map_mc.addEventListener(MouseEvent.MOUSE_OVER, mapOver); 
map_mc.addEventListener(MouseEvent.MOUSE_OUT, mapOut); 

map_mc.northZone.countryName = "Singapore"; 
map_mc.northZone.zone = "North Zone"; 

map_mc.centralZone.countryName = "Singapore"; 
map_mc.centralZone.zone = "Central Zone"; 

map_mc.eastZone.countryName = "Singapore"; 
map_mc.eastZone.zone = "East Zone"; 

map_mc.westZone.countryName = "Singapore"; 
map_mc.westZone.zone = "West Zone"; 

map_mc.southZone.countryName = "Singapore"; 
map_mc.southZone.zone = "South Zone"; 

function mapOver(e:MouseEvent):void{ 
    var mapItem:MovieClip = e.target as MovieClip; 
    description.countryName_txt.text = mapItem.countryName; 
    description.zone_txt.text = mapItem.zone; 
    description.gotoAndStop(mapItem.name); 
    TweenMax.to(mapItem, .5, {tint:0xFF9900}); 
    TweenMax.fromTo(description, .5, {alpha:0, x:50, blurFilter:{blurX:80}}, {alpha:1, x:10, blurFilter:{blurX:0}}); 
    } 

function mapOut(e:MouseEvent):void{ 
    var mapItem:MovieClip = e.target as MovieClip; 
    TweenMax.to(mapItem, .5, {tint:0x990000}); 
    } 
+2

文本字段的文本不能设置为null。这可以通过在设置文本字段之前跟踪'countryName'和'zone'的'mapItem'属性来确认:'trace(mapItem.countryName); trace(mapItem.zone);''从'mapOver'事件处理函数中,'mapItem'看起来不是包含这些属性的区域。 – 2012-07-09 05:57:20

+0

嗨贾森,它似乎并不工作,虽然我改变了: 'description.countryName_txt.text = mapItem.countryName; description.zone_txt.text = mapItem.zone;' 至 'description.countryName_txt.text = trace(mapItem.countryName); description.zone_txt.text = trace(mapItem.zone);' – kokloong 2012-07-10 00:52:29

回答

0

文本字段文本不能为空。

具体而言,此错误是由将文本字段text属性设置为null引起的。这可以用TextField经典文本复制:

经典文本:

var tf:TextField = new TextField(); 
tf.text = null; 

这将引发错误的引用:

Error #2007: Parameter text must be non-null.

TLF文本没有这个问题,并且可以设置为空。

根据您的实施情况,这发生在您的mapOver(e:MouseEvent)函数中。 mapItem.countryNamemapItem.zone为空。它们很可能都是空的。

var mapItem:MovieClip = e.target as MovieClip; 
description.countryName_txt.text = mapItem.countryName; // null 
description.zone_txt.text = mapItem.zone;    // null 

鼠标事件似乎不会从您期望的范围中调度。你有map_mc监听器:

map_mc.addEventListener(MouseEvent.MOUSE_OVER, mapOver); 

它看起来像你期待从以下任何影片剪辑的这一事件:northZonecentralZoneeastZonewestZonesouthZone。这些符号具有您正在查找的属性;但是,map_mc不。

所以,根本原因是你的事件监听器e.target不是你期待的符号。

验证什么符号e.target是。这可能map_mc不具有您所期待的特性:

map_mc.countryName; // doesn't exist 
mac_mc.zone;  // doesn't exist 

您正在寻找有关的map_mc孩子这些属性:

map_mc.northZone.countryName; 
map_mc.northZone.zone; 

map_mc.centralZone.countryName; 
map_mc.centralZone.zone; 

// etc... 
+0

嗨Jason,我可以明白你的意思,但是我怎么想代码以便我不会有这个错误?我认为你是对的,因为只有在我的鼠标没有指向地图之外的区域之后才显示错误。 – kokloong 2012-07-10 05:46:38

+0

如果我像这样初始化,这个错误会消失吗?'map_mc.countryName =“”; mac_mc.zone =“”;' – kokloong 2012-07-10 05:49:25

+0

不知道这些区域动画片段是什么 - 首先,您可以尝试将事件侦听器直接附加到区域,如:'map_mc.northZone.addEventListener(MouseEvent.MOUSE_OVER,mapOver);' – 2012-07-10 05:59:54

相关问题