2016-06-18 5 views
1

私はすでに試していますが、私が期待しているものではありません。スプライトを追加するためのマウスイベントの使用方法Cocos2d-js

私のマウスがスプライトを指しているとき、スプライトが赤くなったり赤い境界線があるとか、マウスがそのスプライトを指していることに気がついたら何かを作りたいと思う。この場合、私は同じスプライトを持つ別のスプライトを呼び出していますが、より明るいです。

それは本当にスプライト、私は私がしたいスプライトのようなバックグラウンドを持っていないので、ここで私のバックグラウンド

Objs.aSprite_1st12 = new cc.Node(); 
Objs.aSprite_1st12.setContentSize(100,100); 
Objs.aSprite_1st12.setAnchorPoint(0.5, 0.5); 
Objs.aSprite_1st12.setScaleX(1.4); 
Objs.aSprite_1st12.setScaleY(0.4); 
Objs.aSprite_1st12.setRotation(25); 
Objs.aSprite_1st12.setSkewX(10); 
Objs.aSprite_1st12.setSkewY(-12); 
Objs.aSprite_1st12.setPosition(cc.p(474,263)); 
this.addChild(Objs.aSprite_1st12, 10); 

と私は呼んでいる機能のマウスイベントから特定の場所を指し示すコード

mouseEvent(this); 

ここで関数が

function mouseEvent(that){ 
cc.eventManager.addListener({ 
     event:cc.EventListener.MOUSE, 
     onMouseMove: function (event){ 
      var target = event.getCurrentTarget(); 
      var locationInNode = Objs.aSprite_1st12; 
      var s = target.getContentSize(); 
      var rect = cc.rect(0, 0, s.width, s.height); 
      if (cc.rectContainsPoint(rect, locationInNode)) { 
       var sprite1 = new cc.Sprite.create(Objs.sidechip); 
       sprite1.setPosition(cc.p(474,263)); 
       sprite1.setScale(0.3); 
       that.addChild(sprite1,0); 
      } 
     } 
    }, that); 
} 

このコードの作業、およびSPEに追加された新しいスプライトです私はそれがマウスが動いているときにそれが欲しいが、問題は、スプライトが常に追加されたマウスを移動するたびにです。マウスがObjs.aSprite_1st12を指していれば、新しいスプライトが追加されただけです。私はObjs.aSprite_1st12が実際に何であるかを認識していないんだものの

答えて

0

ここでコードは正確に何が欲しいのですか?

var sprite1 = new cc.Sprite.create(Objs.sidechip); 
         sprite1.setPosition(cc.p(474,263)); 
         sprite1.setScale(0.3); 
         sprite1.setVisible (false); 
         this.addChild(sprite1,0); 
    cc.eventManager.addListener(
    { 
     event:cc.EventListener.MOUSE, 

     onMouseMove: function (event) 
     { 
      var n = Math.floor(event.getLocationX()); 
      var m = Math.floor(event.getLocationY()); 
      if (n >= 396 && n <= 556 && m >= 216 && m <= 303){ 
      cc.log ("ikeh");  
      sprite1.setVisible (true); 
      }else{ 
       sprite1.setVisible (false); 
      } 
     } 
    }, this); 

ので、私はちょうど私がそれを最初にしてsetVisible(false);たいスプライト、マウスが(n >= 396 && n <= 556 && m >= 216 && m <= 303)の間で指摘するとき、それはsetVisible(true);だを追加します。

0

私は、コードあなたが

var target = event.getCurrentTarget(); 
var locationInNode = Objs.aSprite_1st12; 

扱い対象としてANY cc.Nodeを示してきたことを確信しています。うまくいけばObjs.aSprite_1st12は自分のスプライトリソース、cc.Nodeインスタンスではありません、あなたはそれだけでObjs.aSprite_1st12ホバーでトリガしたい場合、およびだから、あなたは右

var s = Objs.aSprite_1st12.getContentSize(); 
    var rect = cc.rect(0, 0, s.width, s.height); 
    if (cc.rectContainsPoint(rect, locationInNode)) { 

var s = target.getContentSize(); 
var rect = cc.rect(0, 0, s.width, s.height); 
if (cc.rectContainsPoint(rect, locationInNode)) { 

を変更する必要がありますか?

+0

ええ、あなたが私に 'var target = event.getCurrentTarget();'と言った後に気づくのは 'onMouseMove:function(event){'が移動する場所なので、マウスのたびに新しいスプライトを呼び出します移動です。私はあなたが言ったようにもコードを変更しますが、新しいスプライトは決して表示されません。ありがとうbtw – Pentolan

+0

ああ、もう一度ありがとう、私はそれが私が欲しいものにする方法に気づいています。私は答えを投稿しています – Pentolan

関連する問題