1

我需要以下代码的帮助,我想添加移动触摸点击事件。我已经通过代码片段面板添加了代码。

如果我单击已发布的电影,代码会执行,但是一旦我通过 AIR Mobile 调试启动器中的触摸设置对其进行测试,它就会给我带来以下错误

“TypeError:错误 #1034:类型强制失败:无法将 flash.events::TouchEvent@5fe2ec1 转换为 flash.events.MouseEvent。”......

// create all the cards, position them, and assign a randomcard face to each
for(var xx:uint=0;xx<boardWidth;xx++) { // horizontal
    for(var yy:uint=0;yy<boardHeight;yy++) { // vertical
    var c:card = new card(); // copy the movie clip card
    c.stop(); // stop on first frame
    c.x = xx*cardHorizontalSpacing+boardOffsetX; // set position
    c.y = yy*cardVerticalSpacing+boardOffsetY;
    var r:uint = Math.floor(Math.random()*cardList.length); // get a random face
    c.cardface = cardList[r]; // assign face to card
    cardList.splice(r,1); // remove face from list
    Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
    c.addEventListener(TouchEvent.TOUCH_TAP, clickCard);
    c.addEventListener(MouseEvent.CLICK,clickCard); // have it listen for clicks
    trace(c.name);
    addChild(c); // show the card
    cardsLeft++;
}

}

4

1 回答 1

0

不要对鼠标事件和触摸事件使用相同的事件处理程序。

给你的 clickCard 一个 TouchEvent:

并为 mouseEvents 创建一个新函数,因为鼠标事件的事件处理程序应该具有 MouseEvent 类型

private function touchCard(e:TouchEvent):void
{
    // all touches
    const touches:Vector.<Touch> = e.getTouches(_q);
    // phase ending (finger release)?
    for each (var touch:Touch in touches)
    {
        if (touch.phase == TouchPhase.ENDED)
        {
            trace("Touch ended on card!");
        }
    }
}

private function clickCard(e:MouseEvent):void
{
    .. do stuff for mouses
}

显然将代码中的处理程序更改为指向这些。

发布时看不到错误的原因可能是因为发布电影可能设置为在非调试版本的 Flash 播放器中运行?也许。

于 2013-10-01T10:59:41.967 回答