现在的位置: 首页 > 综合 > 正文

js

2014年01月14日 ⁄ 综合 ⁄ 共 4292字 ⁄ 字号 评论关闭

1.tests-main.js

1.TestScene

var TestScene = cc.Scene.extend({   });

其他例子的 scene 基本都继承 TestScene,功能:Main Menu  按钮,按按钮跳转到菜单界面TestController 

继承于TestScene 的scene

TestScene

var TestScene = cc.Scene.extend({

    ctor:function (bPortrait) {
        this._super();
        this.init();
    },

    onEnter:function () {
        this._super();

        var label = cc.LabelTTF.create("Main Menu", "Arial", 20);
        var menuItem = cc.MenuItemLabel.create(label, this.onMainMenuCallback, this);
        var menu = cc.Menu.create(menuItem);
        menu.setPosition(0,0);
        menuItem.setPosition(winSize.width - 50, 25);
        this.addChild(menu, 1);
    },

    onMainMenuCallback:function () {
        var scene = cc.Scene.create();
        var layer = new TestController();
        scene.addChild(layer);
        var transition = cc.TransitionProgressRadialCCW.create(0.5,scene);
        director.replaceScene(transition);
    },

    runThisTest:function () {
    }

});

TestController

var TestController = cc.LayerGradient.extend({
    _itemMenu:null,
    _beginPos:0,
    isMouseDown:false,

    ctor:function() {
        this._super();
        this.init( cc.c4b(0,0,0,255), cc.c4b(0x46,0x82,0xB4,255));

        //全局变量初始化
        director = cc.Director.getInstance();
        winSize = director.getWinSize();

        //关闭按钮
        var closeItem = cc.MenuItemImage.create(s_pathClose, s_pathClose, this.onCloseCallback, this);
        closeItem.setPosition(winSize.width - 30, winSize.height - 30);


        //组合按钮
        var subItem1 = cc.MenuItemFont.create("Automated Test: Off");
        subItem1.setFontSize(18);
        var subItem2 = cc.MenuItemFont.create("Automated Test: On");
        subItem2.setFontSize(18);
        var toggleAutoTestItem = cc.MenuItemToggle.create(subItem1, subItem2);
        toggleAutoTestItem.setCallback(this.onToggleAutoTest, this);
        toggleAutoTestItem.setPosition(winSize.width-90, 20);
        if( autoTestEnabled )
                toggleAutoTestItem.setSelectedIndex(1);

        var menu = cc.Menu.create(closeItem, toggleAutoTestItem);//pmenu is just a holder for the close button
        menu.setPosition(0,0);
        this.addChild(menu, 1);

        //菜单按钮
        this._itemMenu = cc.Menu.create();//item menu is where all the label goes, and the one gets scrolled

        for (var i = 0, len = testNames.length; i < len; i++) {

            var label = cc.LabelTTF.create(testNames[i].title, "Arial", 24);
            var menuItem = cc.MenuItemLabel.create(label, this.onMenuCallback, this);
            this._itemMenu.addChild(menuItem, i + 10000);
            menuItem.setPosition(winSize.width / 2, (winSize.height - (i + 1) * LINE_SPACE));

            //判断平台设置触摸
            if ( sys.platform == 'browser') {
                if( 'opengl' in sys.capabilities ){
                    menuItem.setEnabled( (testNames[i].platforms & PLATFORM_HTML5) | (testNames[i].platforms & PLATFORM_HTML5_WEBGL) );
                }else{
                    menuItem.setEnabled( testNames[i].platforms & PLATFORM_HTML5 );
                }
            } else {
                menuItem.setEnabled( testNames[i].platforms & PLATFORM_JSB );
            }
        }

        //设置菜单按钮容器大小
        this._itemMenu.setContentSize(cc.size(winSize.width, (testNames.length + 1) * LINE_SPACE));
        this._itemMenu.setPosition(curPos);
        this.addChild(this._itemMenu);


        //浏览器支持性
        if( 'touches' in sys.capabilities )//不支持
            this.setTouchEnabled(true);     //onTouchesMoved
        else if( 'mouse' in sys.capabilities )//支持
            this.setMouseEnabled(true);     //onMouseDragged、onScrollWheel
    },

    onEnter:function(){
        this._super();
        var pos = this._itemMenu.getPosition();
        this._itemMenu.setPosition(pos.x, TestController.YOffset);
    },

    //菜单按钮
    onMenuCallback:function (sender) {
        TestController.YOffset = this._itemMenu.getPosition().y;
        var idx = sender.getZOrder() - 10000;
        autoTestCurrentTestName = testNames[idx].title;

        //加载对应的scene
        var testCase = testNames[idx];
        var res = testCase.resource || [];

        cc.Loader.preload(res, function () {
            var scene = testCase.testScene();
            if (scene) {
                scene.runThisTest();
            }
        }, this);
    },

    //关闭按钮
    onCloseCallback:function () {
        history.go(-1);
    },

    //两个切换按钮
    onToggleAutoTest:function() {
        autoTestEnabled = !autoTestEnabled;
    },

    onTouchesMoved:function (touches, event) {

        cc.log("onTouchesMoved");

        var delta = touches[0].getDelta();
        this.moveMenu(delta);
        return true;
    },

    //拖拽鼠标
    onMouseDragged : function( event ) {

        cc.log("onMouseDragged");

        var delta = event.getDelta();
        this.moveMenu(delta);
        return true;
    },

    //滑动鼠标轮
    onScrollWheel:function(event){

       cc.log("onScrollWheel");

        var delta = event.getWheelDelta();//滑动的速度
        this.moveMenu({y:-delta});
        return true;
    },

    //根据滑动行走的大小,去移动menu从而移动了菜单
    moveMenu:function(delta) {



        var current = this._itemMenu.getPosition();

        cc.log("moveMenu" + current.y + "   " + delta.y);


        var newY = current.y + delta.y;
        if (newY < 0 )
            newY = 0;

        if( newY > ((testNames.length + 1) * LINE_SPACE - winSize.height))
            newY = ((testNames.length + 1) * LINE_SPACE - winSize.height);

        this._itemMenu.setPosition(current.x, newY);
    }
});

testNames数组

     /*scene
     *      testScene:function () {
      return new ActionManagerTestScene();
      }
     * */
    //这些scene基本都是继承TestScene
TestController.YOffset = 0;
var testNames = [
    {
        title:"ActionManager Test",
        platforms: PLATFORM_ALL,
        testScene:function () {
            return new ActionManagerTestScene();
        }
    },
....

];

【上篇】
【下篇】

抱歉!评论已关闭.