【问题标题】:easeljs splitting an image into pieces画架将图像分成几块
【发布时间】:2013-11-05 20:26:10
【问题描述】:

我是easeljs 的新手,想知道如何将图像分割成给定数量的块。从到目前为止我收集到的信息来看,我应该使用 SpriteSheets 来完成此操作。但是,我看到的唯一教程是在一个 Spritesheet 中包含多个图像的教程,而不是一个图像分成多个图像并放入 SpriteSheet 的教程。 到目前为止,这是我的代码(我知道变量 frames 是未定义的,因为我还不能正确访问 spriteSheet 数组):

  var data = {
    images: ["/images/teemo.png"],
    frames: {width:50, height:50}
  };
  var spriteSheet = new createjs.SpriteSheet(data);
  console.log(spriteSheet);
  console.log(spriteSheet[frames]);
  var frames = spriteSheet[frames];
  console.log(frames);
  for (var i=0; i<frames.length; i++){
    var bmp = new createjs.Bitmap(SpriteSheet[frames][i]);
  }

【问题讨论】:

    标签: image split easeljs createjs splitter


    【解决方案1】:

    spritesheet 是一种有趣的方式(虽然不是该类的真正意图)。不过你的用法是错误的。

    1. 创建 Spritesheet
    2. 创建 Sprite 实例(在 EaselJS 0.6.1 及更早版本中称为 BitmapAnimation),每个实例都指向同一个 SpriteSheet 实例
    3. 使用 sprite.gotoAndStop(frame) 让每个实例显示不同的片段

    这是一个例子:

    for (var i=0; i< numberOfImages; i++) {
        var sprite = new createsjs.Sprite(spriteSheetData);
        sprite.gotoAndStop(i);
        stage.addChild(sprite);
        // Other stuff
    }
    

    您还可以使用 Bitmap 和 sourceRect 属性裁剪图像,该属性使用 Rectangle 来定义裁剪区域。这最终与上述方法大致相同,但可能需要更多的工作来确定每个 Rectangle 尺寸。

    干杯。

    【讨论】:

    • 由于需要克隆位图以创建多个具有不同 sourceRects 的位图,Spritesheet 会不会更节省内存?
    • 您也可以只将索引传递给 Sprite 而不是使用 gotoAndStop(i):var sprite = new createsjs.Sprite(spriteSheetData, i);
    • @programmerdave 在多个位图中使用同一图像作为源时,不会克隆任何内容。
    • @programmerdave - 感谢提醒 - Spritesheet 框架参数是最新版本 (0.7.0) 中的新参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2013-12-05
    相关资源
    最近更新 更多