飞行棋开发手记

  1. Cosos Creator Asset Bundle https://docs.cocos.com/creator/manual/zh/asset/bundle.html
    因为前期没用合理的划分管理资源,不同scene之间共用资源较多,按资源打bundle远程加载比较麻烦,所以飞行棋选择了直接按scene打bundle,实际操作效果不错,加载scene的时候远程加载既可

    1
    2
    3
    4
    5
    6
    assetManager.loadBundle('main_scene', async (err, bundle) => {
    bundle.loadScene(sceneName, function (err, scene) {
    ...
    });
    ...
    });
  2. 微信小游戏iphone不支持.m4a格式的音频,改为mp3格式运行正常

  3. Cosos Creator ScrollView组件

    1. 滚动后会弹回初始位置,将Bounce Duration属性设置为最大值10,可以模拟不弹回的状态
    2. 默认状态可以滚动到无限远,需要在程序中响应ScrollView.EventType.SCROLLING事件控制
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      this.view.node.on(ScrollView.EventType.SCROLLING, this.scrolling_callback, this);
      scrolling_callback() {
      let pos = this.view.getScrollOffset().y;

      if (pos < - 200) {
      this.view.scrollToOffset(new Vec2(0, pos), 10);
      }
      else if (pos > this.bottom + 200) {
      let maxScrollOffset = this.view.getMaxScrollOffset();
      this.view.scrollToOffset(new Vec2(0, maxScrollOffset.y), 10);
      }
      }
  4. 切换scene,会导致上一次的scene失效,需要重新加载scene(bundle不会失效)

    1
    2
    3
    singleton.netSingleton.bundle.loadScene('main', function (err, scene) {
    director.runScene(scene);
    });
  5. director.addPersistRootNode(this.node)

  6. tilemap坐标转cocos creator场景坐标

    1
    2
    3
    target_x = pos.x * 64 + 32 - game_data.layout_half_width;
    target_y= pos.y * 64 + 32 - game_data.layout_half_height;
    ...