tips_img_050 - spoolkitamura/nyle-doc-jp GitHub Wiki

分割した画像を1次元の配列にするには?

load_image_tilesメソッドでは、1つの画像を分割して
小分けにされた各画像を2次元配列として得ることができます。

ただ、画像ファイルの内容によっては1次元配列の方が処理しやすいケースも
ありますので、その際は下記の各例のように Rubyの配列に備わっている
flattentranspose などのメソッドを使って1元の配列に変換してください。

[関連情報]
load_image_tiles

 

  • 縦1行×横9列のコマ画像の処理例
require 'nyle'

class Screen < Nyle::Screen
  def initialize
    super(200, 200, {bgcolor: :IVORY})
    # 9x1に分割された2次元配列を flattenメソッドで平坦化
    @image = Nyle.load_image_tiles("./jump_91.png", 9, 1, {color_key: :WHITE}).flatten
    @i = 0
  end
  def draw
    Nyle.draw_image(40, 30, @image[@i])
    @i += 1
    @i = 0 if @i >= 9
  end
end

Screen.new.show_all({interval: 80})
Nyle.main

[実行結果] および [画像ファイル(jump_91.png)]



  • 縦3行×横3列のコマ画像(横方向の順序での並び)の処理例
require 'nyle'

class Screen < Nyle::Screen
  def initialize
    super(200, 200, {bgcolor: :IVORY})
    # 3x3に分割された2次元配列について
    # transposeメソッドで行と列を入れ替えてから flattenメソッドで平坦化
    @image = Nyle.load_image_tiles("./jump_33h.png", 3, 3, {color_key: :WHITE}).transpose.flatten
    @i = 0
  end
  def draw
    Nyle.draw_image(40, 30, @image[@i])
    @i += 1
    @i = 0 if @i >= 9
  end
end

Screen.new.show_all({interval: 80})
Nyle.main

[実行結果] および [画像ファイル(jump_33h.png)]


  • 縦3行×横3列のコマ画像(縦方向の順序での並び)の処理例
require 'nyle'

class Screen < Nyle::Screen
  def initialize
    super(200, 200, {bgcolor: :IVORY})
    # 3x3に分割された2次元配列を flattenメソッドで平坦化
    @image = Nyle.load_image_tiles("./jump_33v.png", 3, 3, {color_key: :WHITE}).flatten
    @i = 0
  end
  def draw
    Nyle.draw_image(40, 30, @image[@i])
    @i += 1
    @i = 0 if @i >= 9
  end
end

Screen.new.show_all({interval: 80})
Nyle.main

[実行結果] および [画像ファイル(jump_33v.png)]