TypeError:错误#2007:参数文本必须为非空
Posted
技术标签:
【中文标题】TypeError:错误#2007:参数文本必须为非空【英文标题】:TypeError: Error #2007: Parameter text must be non-null 【发布时间】:2012-07-08 12:18:24 【问题描述】:我是 Flash 新手,我真的不知道我收到此错误的原因是什么:
TypeError:错误 #2007:参数文本必须为非空。 在 flash.text::TextField/set text() 在 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);
【问题讨论】:
文本字段文本不能设置为空。这可以通过在设置文本字段之前跟踪countryName
和zone
的mapItem
属性来确认:trace(mapItem.countryName); trace(mapItem.zone);
在您的mapOver
事件处理程序中,mapItem
似乎不是包含这些属性的区域。
嗨 Jason,虽然我从 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);
,但它似乎不起作用
【参考方案1】:
文本字段文本不能为空。
具体而言,此错误是由将文本字段 text
属性设置为 null
引起的。这可以用TextField
Classic Text 复制:
经典文字:
var tf:TextField = new TextField();
tf.text = null;
这将抛出您引用的错误:
错误 #2007:参数文本必须为非空。
TLF Text没有这个问题,可以设置为null。
根据您的实现,这发生在您的 mapOver(e:MouseEvent)
函数中。 mapItem.countryName
或 mapItem.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);
您似乎希望从以下任何影片剪辑中获得此事件:northZone
、centralZone
、eastZone
、westZone
和 southZone
。这些符号具有您正在寻找的属性;但是, 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...
【讨论】:
嗨,Jason,我能理解你的意思,但我应该如何编写代码才能避免出现此错误?我认为您是对的,因为仅在我的鼠标未指向意味着地图之外的区域后才显示的错误。 如果我这样初始化这个错误会消失吗?map_mc.countryName = ""; mac_mc.zone= "";
不确定这些区域 MovieClip 是什么 - 首先,您可以尝试将事件侦听器直接附加到区域,如:map_mc.northZone.addEventListener(MouseEvent.MOUSE_OVER, mapOver);
以上是关于TypeError:错误#2007:参数文本必须为非空的主要内容,如果未能解决你的问题,请参考以下文章
TypeError [ERR_INVALID_ARG_TYPE]:“ path”参数必须为字符串Node.JS类型
TypeError: function() 参数 1 必须是代码,而不是 str
TypeError: connect() 参数 4 必须是 str,而不是 WindowsPath。 /*我在简单登录 django 项目中遇到的错误*/
图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义
TypeError:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为获取 bool 实例)