tips_img_050 - spoolkitamura/nyle-doc-jp GitHub Wiki
分割した画像を1次元の配列にするには?
load_image_tiles
メソッドでは、1つの画像を分割して
小分けにされた各画像を2次元配列として得ることができます。
ただ、画像ファイルの内容によっては1次元配列の方が処理しやすいケースも
ありますので、その際は下記の各例のように Rubyの配列に備わっている
flatten
や transpose
などのメソッドを使って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)]