【问题标题】:TypeError: Error #1034: Type Coercion failedTypeError:错误#1034:类型强制失败
【发布时间】:2015-03-04 20:17:07
【问题描述】:

完全错误: TypeError:错误 #1034:类型强制失败:无法将 flash.events::KeyboardEvent@4ff2301 转换为 flash.events.MouseEvent。

我遵循了一个非常简单的教程,使用 ActionScript 3 进行了一个简单的测验。但是,一旦完成,我就会收到上述错误。该教程已经很老了,所以只是希望这里有人可以检查一下,看看我是否犯了明显的错误。

    Enter_btn.addEventListener(MouseEvent.CLICK, go);

var quizModel:Array = [{q:"2+2", a:"4"}, {q:"What colour is a banana = ?", a:"Yellow"}];
var user_ans:Array = new Array();
var newQuizModel:Array = shuffleArray(quizModel);
stage.addEventListener(KeyboardEvent.KEY_DOWN, go);


function showQuiz(index:int):void
{
    question_txt.text = newQuizModel[index]["q"];
}


var index:int = 0;
question_txt.text = newQuizModel[index]["q"];
var userAnswer:String = "";
function go(e:MouseEvent)
{


    userAnswer = answers_txt.text;

    if (userAnswer == newQuizModel[index]["a"])
    {
        rightwrong_txt.text = "Your answer is correct!";
    }
    else
    {
        rightwrong_txt.text = "Your answer is wrong";
        return;
    }

    index++;
    index%= quizModel.length;
    showQuiz(index);
}

function shuffleArray(arr:Array):Array
{
    var l:Number = arr.length - 1;

    for (var it:uint = 0; it<l; it++)
    {
        var r:int = Math.round(Math.random() * l);  /// l is an L
        var tmp:Object = arr[it];
        arr[it] = arr[r];
        arr[r] = tmp;
    }
    return arr;
}


showQuiz(index);

【问题讨论】:

    标签: actionscript-3 typeerror


    【解决方案1】:

    go(e:MouseEvent) 替换为go(e:Event)

    您向 MouseEvent 和 KeyboardEvent 注册了一个事件处理程序。当MouseEvent.CLICK 被触发时,函数go 将被调用。 MouseEvent 的一个实例将在函数 go 中传递。没有错误。但是当KeyboardEvent.KEY_DOWN 被触发时,KeyboardEvent 的实例将在go 函数中传递。并且发生错误。对不起我的英语不好。你明白吗?

    【讨论】:

    • 好的,我修复了所有错误。谢谢你的建议。我需要删除keyboard.Key_Down,因为我没有使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多