万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

CoffeeScriptでcocos2d-JSのサンプルを

coffee --bare -wc file_nameで変換した。

cc.game.onStart = () ->
    cc.view.adjustViewPort(true)
    cc.view.setDesignResolutionSize(800, 450, cc.ResolutionPolicy.SHOW_ALL)
    cc.view.resizeWithBrowserSize(true)
    # load resources
    cc.LoaderScene.preload(g_resources, () ->
        cc.director.runScene(new HelloWorldScene())
    , this)

cc.game.run()
res =
    HelloWorld_png : "res/HelloWorld.png"
    CloseNormal_png : "res/CloseNormal.png"
    CloseSelected_png : "res/CloseSelected.png"

g_resources = []

for i in res
    g_resources.push(res[i])
HelloWorldLayer = cc.Layer.extend(
    sprite:null,
    ctor:() ->
        ###############
        # 1. super init first
        this._super()

        ##############
        # 2. add a menu item with "X" image, which is clicked to quit the program
        #    you may modify it.
        # ask the window size
        size = cc.winSize

        # add a "close" icon to exit the progress. it's an autorelease object
        closeItem = new cc.MenuItemImage(
            res.CloseNormal_png
            res.CloseSelected_png
            () ->
                cc.log("Menu is clicked!")
            this
        )
        closeItem.attr(
            x: size.width - 20
            y: 20
            anchorX: 0.5
            anchorY: 0.5
        )

        menu = new cc.Menu(closeItem)
        menu.x = 0
        menu.y = 0
        this.addChild(menu, 1)

        ##############
        # 3. add your codes below...
        # add a label shows "Hello World"
        # create and initialize a label
        helloLabel = new cc.LabelTTF("Hello World", "Arial", 38)
        # position the label on the center of the screen
        helloLabel.x = size.width / 2
        helloLabel.y = 0
        # add the label as a child to this layer
        this.addChild(helloLabel, 5)

        # add "HelloWorld" splash screen"
        this.sprite = new cc.Sprite(res.HelloWorld_png)
        this.sprite.attr(
            x: size.width / 2
            y: size.height / 2
            scale: 0.5,
            rotation: 180
        )
        this.addChild(this.sprite, 0)

        this.sprite.runAction(
            cc.sequence(
                cc.rotateTo(2, 0),
                cc.scaleTo(2, 1, 1)
            )
        )
        helloLabel.runAction(
            cc.spawn(
                cc.moveBy(2.5, cc.p(0, size.height - 40))
                cc.tintTo(2.5,255,125,0)
            )
        )

        return true
)

HelloWorldScene = cc.Scene.extend(
    onEnter:() ->
        this._super()
        layer = new HelloWorldLayer()
        this.addChild(layer)
)