首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pixi.js阶段亲本

Pixi.js阶段亲本
EN

Stack Overflow用户
提问于 2014-05-06 16:19:20
回答 1查看 1.6K关注 0票数 0

我在javascript中有一个图形对象。在这里面,我有一个私人成员的pixi js舞台。在这个阶段,我有一个PIXI.Graphics()对象,其中包含两条垂直线。我在图形对象中有一些方法,可以根据点击操作这些方法。

问题是:我将舞台设置为交互式,然后将stage.mousedown事件设置为函数,但是在这个函数中,我的this是舞台而不是图形对象。我试图访问父程序,但它是空的。我尝试在创建mousdown操作之前设置父级,方法是执行以下操作:

代码语言:javascript
复制
this.stage.parent = this;
this.stage.mousedown = function(mouseData) {...}

但是鼠标向下的动作永远不会被击中。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 09:58:14

您需要在创建mousedown函数的相同范围内创建一个变量。JS函数自动了解其父作用域中的变量。它可以是对父对象作用域的引用,也可以是要调用的函数。

代码语言:javascript
复制
function PixiObject() {

  var stage, 
      renderer;

  this.init = function() {
    stage = new PIXI.Stage(0x000000, true);
    renderer = PIXI.autoDetectRenderer(480, 320, null, false);
    document.body.appendChild(renderer.view);

    var onStageDownA = function() {
      console.log('onStageDownA called');
    };
    this.onStageDownB = function() {
      console.log('onStageDownB called');
    };
    var self = this;
    stage.mousedown = stage.touchstart = function() {
      console.log(this); // stage
      console.log(self); // pixi object
      onStageDownA(); // calls function
      self.onStageDownB(); // calls function
    };

    update();
  }

  function update() {
    requestAnimFrame(update);
    renderer.render(stage);
  }
}

window.onload = function() {
    var p = new PixiObject();
    p.init();
};

下面是一个有用的例子:

http://codepen.io/ianmcgregor/pen/eFEJv

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23499917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档