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);
    

【问题讨论】:

文本字段文本不能设置为空。这可以通过在设置文本字段之前跟踪countryNamezonemapItem 属性来确认: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.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...

【讨论】:

嗨,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 实例)

TypeError:函数中参数的数据位置必须是“内存”,但没有给出