2012-07-09 222 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

相關問題