在AS3上获取此错误.TypeError:错误#1006:value不是函数。

时间:2015-10-09 13:12:37

标签: actionscript-3

在AS3上获取此错误。 TypeError:错误#1006:value不是函数。我是新手,无法理解为什么会出现这种错误。非常感谢任何帮助。

$filename="1.pdf";
$newString= explode(".",$filename);
$pdfPath="./public/site/userdocuments/sagar/RetData/".newString[0].".pdf";

在AS3上获取此错误。 TypeError:错误#1006:value不是函数。我是新手,无法理解为什么会出现这种错误。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你有3个布尔人:

var wallet = false;
var bag = false;
var lunch = false;

然后向它们添加事件侦听器。 但由于它们不是EventDispatcher的实例,因此会出现此错误

你为什么这样做? 您应该将click事件侦听器添加到显示对象。如果你有这些显示对象(名为钱包,包和午餐),那么你在这里用布尔值遮蔽它们。 在这种情况下,只需在此重命名您的变量(以及所有出现的变量,排除addEventListener行。例如walletClickedbagClickedlunchClicked

而且:总是使用类型注释,因为你在as3。

var wallet:Boolean = false;

然后wallet.addEventListener(...)将导致编译时错误,而不是运行时错误。哪个更容易纠正。

<强>更新

您还应该考虑以更通用的方式重写此代码以排除代码重复:

var walletFound:Boolean = false;
var lunchFound:Boolean = false;
var bagFound:Boolean = false;

wallet.addEventListener(MouseEvent.CLICK, onItemClick);
lunch.addEventListener(MouseEvent.CLICK, onItemClick);
bag.addEventListener(MouseEvent.CLICK, onItemClick);

function onItemClick(event:MouseEvent):void {
    var found:Boolean;
    var itemName:String;
    switch (event.currentTarget) {
        case wallet:
            found = walletFound;
            itemName = "wallet";
            walletFound = true;
            break;
        case bag:
            found = bagFound;
            itemName = "bag";
            bagFound = true;
            break;
        case lunch:
            found = lunchFound;
            itemName = "lunch box";
            lunchFound = true;
            break;
        default: return;
    }

    var text:String;
    if (found) {
        text = "You Already found your " + itemName + ",look Elsewhere";
    } else {
        text = "You found your " + itemName;
    }

    trace(text);
    TextBox.text = text;
}

没有测试过,但应该可以使用。