Javascript 使用AppMobi&;事件

Javascript 使用AppMobi&;事件,javascript,html,events,javascript-events,appmobi,Javascript,Html,Events,Javascript Events,Appmobi,我是新的AppMobi世界的新手,所以你们能帮帮我吗 我已经创建了一个图像对象并将其绘制到舞台上。我的问题是我想向对象添加一个事件 我已使用以下方法设置图像: function objImage(imageURL,x,y,width,height) { this.imgCanvas = new Image(); this.imageURL = imageURL; this.loaded = false; this.x = x; this.y = y;

我是新的AppMobi世界的新手,所以你们能帮帮我吗

我已经创建了一个图像对象并将其绘制到舞台上。我的问题是我想向对象添加一个事件

我已使用以下方法设置图像:

function objImage(imageURL,x,y,width,height) {
    this.imgCanvas = new Image();
    this.imageURL = imageURL;
    this.loaded = false;
    this.x = x;
    this.y = y;
    this.height = height;
    this.width = width;

    this.draw = function() {

        if (this.width == null || this.height == null)
        {
            ctx.drawImage(this.imgCanvas,this.x,this.y); 
        }
        else
        {
            ctx.drawImage(this.imgCanvas,this.x,this.y,this.width,this.height);         
        }
    }
}
我把它拉到舞台上:

var usercontrols_left = new objImage('images/left.png',10,HEIGHT-100,50,50);
usercontrols_left.draw();

现在我想在“usercontrols\u left”中添加一个事件,例如检测用户何时触摸/单击它。

我无法判断您是否正在使用directCanvas。我认为这一解决方案应该在任何一种情况下都能奏效

捕获touchstart事件并通过其坐标感测它是否位于左侧元素的位置。如果是,则执行需要激发的命令

伪代码:

Canvas.addEventListener('touchstart', startTouch, false);

function startTouch(){
    if(touch.x<60&&touch.x>10&&touch.y<height-50&&touch.y>height-100)
     { handleLeftControl(); }
}
Canvas.addEventListener('touchstart',startTouch,false);
函数startTouch(){
如果(触摸x10和触摸YHight-100)
{handleLeftControl();}
}
编辑*改用webview的示例: 在webview中,您将拥有:

<div id="Leftbutn" ontouchstart="AppMobi.canvas.execute('switchCommand(\'leftBTNdown\');')" ontouchend="AppMobi.canvas.execute('switchCommand(\'leftBTup\');')" ></div>


然后在directCanvas端,您只需通过在开关或函数中执行的操作来处理这些命令

谢谢你的回答。我正在使用directCanvas。那么,没有办法在特定元素上设置事件吗?我个人建议您在webview中创建UI,然后将事件传递给DC,因为这样更易于维护。谢谢!因此,最好的做法是用html创建所有UI元素,显示和隐藏部分,如主菜单、游戏等,并将事件传递给DC以执行功能?是的,我认为这比用JS创建整个UI容易得多。