Cocos Creator 試す

creator.d.tsでエラーが出まくる

よく見ると _の部分でエラー。なので、多分htmlの変換だろうということで __ に置換。 https://www.w3.org/MarkUp/html-spec/html-spec_13.html

Spriteにマウスイベント追加

@property(cc.Sprite) sprite: cc.Sprite = null;

start() {
  this.onMouseEvent(this.sprite.node);
}

// getLocation()など専用のAPIを使う場合、cc.EventMouseの型を指定する。
onMouseEventTest(node: cc.Node) {
    node.on(cc.Node.EventType.MOUSE_DOWN, (event: cc.Event.EventMouse) => {
        console.log('Mouse Down');
    });
    node.on(cc.Node.EventType.MOUSE_LEAVE, (event: cc.Event.EventMouse) => {
        console.log('Mouse Leave');
    });
    node.on(cc.Node.EventType.MOUSE_MOVE, (event: cc.Event.EventMouse) => {
        console.log('Mouse Move');
        console.log(event.getLocation());
    });
    node.on(cc.Node.EventType.MOUSE_UP, (event: cc.Event.EventMouse) => {
        console.log('Mouse Up');
    });
}

プレハブ生成 + Buttonのクリックイベント

http://www.cocos2d-x.org/docs/creator/en/components/button.html?h=button

http://www.cocos2d-x.org/docs/creator/en/getting-started/quick-start.html?h=random

※ プレハブはUnityのように一度ノードツリーからアセットツリーにD&Dしたら作成されます。

@property(cc.Prefab) prefab: cc.Prefab = null;
@property(cc.Button) button: cc.Button = null;

start() {
  this.button.node.on('click', (event) => {
    console.log('click');
    this.onCreateAsset();
  });
}

onCreateAsset() {
  let newNode = cc.instantiate(this.prefab);

  let x = cc.randomMinus1To1() * 300;
  let y = cc.randomMinus1To1() * 300;
  newNode.setPosition(x, y);

  this.node.addChild(newNode);
}

f:id:hayateasdf:20180123174006g:plain

スクリプト(コンポーネント)を含んだプレハブ生成

Spriteにマウス移動を追加したプレハブを生成

TestScene.ts

const {ccclass, property} = cc._decorator;

@ccclass export default class TestScene extends cc.Component {

    @property(cc.Prefab) prefab: cc.Prefab = null;
    @property(cc.Button) button: cc.Button = null;

    start () {
        // http://www.cocos2d-x.org/docs/creator/en/components/button.html?h=button
        this.button.node.on('click', (event) => {
            console.log('CLICK');
            this.onCreateAssets();
        });
    }

    update() { }

    onCreateAssets() {
        let newNode = cc.instantiate(this.prefab);

        // http://www.cocos2d-x.org/docs/creator/en/getting-started/quick-start.html?h=random
        let x = cc.randomMinus1To1() * 300;
        let y = cc.randomMinus1To1() * 300;
        newNode.setPosition(x, y);

        this.node.addChild(newNode);
    }
}

TouchComponent.ts

const {ccclass, property} = cc._decorator;

@ccclass
export default class TouchComponent extends cc.Component {
    isMouseDown: boolean;

    onLoad() {
        this.onMouseEventTest(this.node);
    }

    onMouseEventTest(node: cc.Node) {
        this.isMouseDown = false;

        node.on(cc.Node.EventType.MOUSE_DOWN, (event: cc.Event.EventMouse) => {
            this.isMouseDown = true;
            console.log('Mouse Down');
        });
        node.on(cc.Node.EventType.MOUSE_LEAVE, (event: cc.Event.EventMouse) => {
            this.isMouseDown = false;
            console.log('Mouse Leave');
        });
        node.on(cc.Node.EventType.MOUSE_MOVE, (event: cc.Event.EventMouse) => {
            if (this.isMouseDown) {
                console.log(event.getDelta());
                node.position = node.position.addSelf(event.getDelta());
            }
        });
        node.on(cc.Node.EventType.MOUSE_UP, (event: cc.Event.EventMouse) => {
            this.isMouseDown = false;
            node.color = cc.Color.WHITE;
            console.log('Mouse Up');
        });
    }
}

f:id:hayateasdf:20180123175654g:plain

f:id:hayateasdf:20180123180411g:plain