Spriteに対してコールバックができない
var popupSprite = cc.Sprite.create();
とボタンを作ってる時に。
cc.MenuItemImage.createよろしく、
var popupSprite = cc.Sprite.create( res.TitleConfirmParent_png, res.TitleConfirmParent_png, function () { cc.log("呼ばれろ!"); } );
と書いてみると、エラーになる。
cc.Spriteの引数的に対応してないから
しかたないので、cc.MenuItemImageで作ってみる。
var popupSprite = cc.MenuItemImage.create(
res.TitleConfirmParent_png,
res.TitleConfirmParent_png,
function () {
cc.log("呼ばれろ!");
}
);
そのまま、cc.Layerにthis.addChildしたところ、
エラーは出ない上、これ自体は追加されるのだが、
タップしても動かない。
var menu = cc.Menu.create( popupSprite );
とcc.Layerとの間にcc.Menuを挟む必要がある。
spriteを配列に入れてfor文が出来ない?
「nineSprite」変数でSpriteを作成。
attrで座標を設定できるようだ。
var nineSprite = cc.MenuItemImage.create( res.CautionNineSprite_png, res.CautionNineSprite_png, function () { // クリック時のコールバック cc.log("9 is clicked!"); },this); nineSprite.attr({ x: 110, y: -120, });
とあるが、今回”9”のボタンを作ったが、
”0〜9”のボタンがあるので、この数に対して座標を
ちまちまと設定するのは面倒なのでfor文で行いたい
出来るかどうかわからないので
「nineSprite」だけ入った配列「numArr」をfor~inで回し、
それに対してattrで座標設定を設定したい。
var numArr = [nineSprite]; for (var sprite in nineSprite) { sprite.attr({ x: 110, y: -120, });
TypeError: sprite.attr is not a function
残念!!できない。
spriteがcc.MenuItemImage型でないからできないのか?
String()みたいに、cc.MenuItemImage(sprite)でキャスト?
for (var sprite in numArr) { var casted = cc.MenuItemImage(sprite); casted.attr({ x: 110, y: -120, });
できない。
varの代わりにcc.MenuItemImage!
for (cc.MenuItemImage sprite in numArr) { sprite.attr({ x: 110, y: -120, }); }
こんな書き方はJS的に無理なので”IDEが赤で波線でエラー”だったので、ありえない。
普通にfor文使ってやれば大丈夫だった。
for(var i=0;i<numArr.length;i++) { numArr[i].attr({ x: 110, y: -120, }); }
というか
実はiに入ってるのはsprite変数に入ってたのは
オブジェクトではなく、添字w
numArr[sprite]とやればとれたはず!