ruby-miyako-mswin32 2.1.10 → 2.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +89 -16
- data/lib/Miyako/API/choices.rb +17 -3
- data/lib/Miyako/API/i_yuki.rb +136 -21
- data/lib/Miyako/API/layout.rb +110 -107
- data/lib/Miyako/API/modules.rb +60 -13
- data/lib/Miyako/API/sprite_animation.rb +32 -37
- data/lib/Miyako/API/sprite_list.rb +34 -0
- data/lib/Miyako/API/textbox.rb +1 -1
- data/lib/Miyako/API/yuki.rb +136 -22
- data/lib/Miyako/EXT/drawer.rb +117 -0
- data/lib/Miyako/miyako.rb +2 -2
- data/lib/Miyako/miyako_no_katana.so +0 -0
- data/sample/drawer_sample.rb +67 -0
- metadata +4 -2
data/lib/Miyako/API/layout.rb
CHANGED
@@ -47,6 +47,9 @@ class Numeric
|
|
47
47
|
end
|
48
48
|
|
49
49
|
module Miyako
|
50
|
+
# for init_layout
|
51
|
+
module Screen
|
52
|
+
end
|
50
53
|
|
51
54
|
#==レイアウト情報を示す構造体
|
52
55
|
LayoutStruct = Struct.new(:pos, :size, :base, :snap, :on_move)
|
@@ -74,7 +77,7 @@ module Miyako
|
|
74
77
|
@layout = LayoutStruct.new
|
75
78
|
@layout.pos = Point.new(0, 0)
|
76
79
|
@layout.size = Size.new(0, 0)
|
77
|
-
@layout.base = Screen
|
80
|
+
@layout.base = Miyako::Screen
|
78
81
|
@layout.snap = LayoutSnapStruct.new(nil, Array.new)
|
79
82
|
@layout.on_move = []
|
80
83
|
end
|
@@ -110,162 +113,162 @@ module Miyako
|
|
110
113
|
# move,move_toの各メソッド。
|
111
114
|
#返却値:: ブロック管理配列
|
112
115
|
def on_move
|
113
|
-
|
116
|
+
return @layout.on_move
|
114
117
|
end
|
115
118
|
|
116
119
|
#===mixinしたインスタンスの位置を左端(x軸)に移動させる
|
117
|
-
|
120
|
+
#設置するとき、基準となる空間の内側に設置される
|
118
121
|
#ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動)
|
119
122
|
#ブロック引数は、自分自身の幅
|
120
123
|
#返却値:: 自分自身
|
121
124
|
def left!(&margin)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
+
base = @layout.base.rect
|
126
|
+
t = @layout.pos[0]
|
127
|
+
@layout.pos[0] = base[0] + (margin ? margin[base[2]].to_i : 0)
|
125
128
|
@layout.snap.children.each{|c| c.left(&margin) }
|
126
129
|
update_layout(@layout.pos[0]-t, 0)
|
127
130
|
@layout.on_move.each{|block|
|
128
131
|
block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0)
|
129
132
|
}
|
130
|
-
|
133
|
+
return self
|
131
134
|
end
|
132
135
|
|
133
136
|
#===mixinしたインスタンスの位置を左端(x軸)に移動させる
|
134
|
-
|
137
|
+
#設置するとき、基準となる空間の外側に設置される
|
135
138
|
#ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動)
|
136
139
|
#ブロック引数は、自分自身の幅
|
137
140
|
#返却値:: 自分自身
|
138
141
|
def outside_left!(&margin)
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
+
base = @layout.base.rect
|
143
|
+
t = @layout.pos[0]
|
144
|
+
@layout.pos[0] = base[0] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0)
|
142
145
|
update_layout(@layout.pos[0]-t, 0)
|
143
146
|
@layout.on_move.each{|block|
|
144
147
|
block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0)
|
145
148
|
}
|
146
|
-
|
149
|
+
return self
|
147
150
|
end
|
148
151
|
|
149
152
|
#===mixinしたインスタンスの位置を中間(x軸)に移動させる
|
150
153
|
#返却値:: 自分自身
|
151
154
|
def center!
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
+
base = @layout.base.rect
|
156
|
+
t = @layout.pos[0]
|
157
|
+
@layout.pos[0] = base[0] + (base[2] >> 1) - (@layout.size[0] >> 1)
|
155
158
|
update_layout(@layout.pos[0]-t, 0)
|
156
159
|
@layout.on_move.each{|block|
|
157
160
|
block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0)
|
158
161
|
}
|
159
|
-
|
162
|
+
return self
|
160
163
|
end
|
161
164
|
|
162
165
|
#===mixinしたインスタンスの位置を右端(x軸)に移動させる
|
163
|
-
|
166
|
+
#設置するとき、基準となる空間の内側に設置される
|
164
167
|
#ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動)
|
165
168
|
#ブロック引数は、自分自身の幅
|
166
169
|
#返却値:: 自分自身
|
167
170
|
def right!(&margin)
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
+
base = @layout.base.rect
|
172
|
+
t = @layout.pos[0]
|
173
|
+
@layout.pos[0] = base[0] + base[2] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0)
|
171
174
|
update_layout(@layout.pos[0]-t, 0)
|
172
175
|
@layout.on_move.each{|block|
|
173
176
|
block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0)
|
174
177
|
}
|
175
|
-
|
178
|
+
return self
|
176
179
|
end
|
177
180
|
|
178
181
|
#===mixinしたインスタンスの位置を右端(x軸)に移動させる
|
179
|
-
|
182
|
+
#設置するとき、基準となる空間の外側に設置される
|
180
183
|
#ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動)
|
181
184
|
#ブロック引数は、自分自身の幅
|
182
185
|
#返却値:: 自分自身
|
183
186
|
def outside_right!(&margin)
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
+
base = @layout.base.rect
|
188
|
+
t = @layout.pos[0]
|
189
|
+
@layout.pos[0] = base[0] + base[2] + (margin ? margin[base[2]].to_i : 0)
|
187
190
|
update_layout(@layout.pos[0]-t, 0)
|
188
191
|
@layout.on_move.each{|block|
|
189
192
|
block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0)
|
190
193
|
}
|
191
|
-
|
194
|
+
return self
|
192
195
|
end
|
193
196
|
|
194
197
|
#===mixinしたインスタンスの位置を上端(y軸)に移動させる
|
195
|
-
|
198
|
+
#設置するとき、基準となる空間の内側に設置される
|
196
199
|
#ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動)
|
197
200
|
#ブロック引数は、自分自身の幅
|
198
201
|
#返却値:: 自分自身
|
199
202
|
def top!(&margin)
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
+
base = @layout.base.rect
|
204
|
+
t = @layout.pos[1]
|
205
|
+
@layout.pos[1] = base[1] + (margin ? margin[base[3]].to_i : 0)
|
203
206
|
update_layout(0, @layout.pos[1]-t)
|
204
207
|
@layout.on_move.each{|block|
|
205
208
|
block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t)
|
206
209
|
}
|
207
|
-
|
210
|
+
return self
|
208
211
|
end
|
209
212
|
|
210
213
|
#===mixinしたインスタンスの位置を上端(y軸)に移動させる
|
211
|
-
|
214
|
+
#設置するとき、基準となる空間の内側に設置される
|
212
215
|
#ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動)
|
213
216
|
#ブロック引数は、自分自身の幅
|
214
217
|
#返却値:: 自分自身
|
215
218
|
def outside_top!(&margin)
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
+
base = @layout.base.rect
|
220
|
+
t = @layout.pos[1]
|
221
|
+
@layout.pos[1] = base[1] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0)
|
219
222
|
update_layout(0, @layout.pos[1]-t)
|
220
223
|
@layout.on_move.each{|block|
|
221
224
|
block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t)
|
222
225
|
}
|
223
|
-
|
226
|
+
return self
|
224
227
|
end
|
225
228
|
|
226
229
|
#===mixinしたインスタンスの位置を中間(y軸)に移動させる
|
227
230
|
#返却値:: 自分自身
|
228
231
|
def middle!
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
+
base = @layout.base.rect
|
233
|
+
t = @layout.pos[1]
|
234
|
+
@layout.pos[1] = base[1] + (base[3] >> 1) - (@layout.size[1] >> 1)
|
232
235
|
update_layout(0, @layout.pos[1]-t)
|
233
236
|
@layout.on_move.each{|block|
|
234
237
|
block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t)
|
235
238
|
}
|
236
|
-
|
239
|
+
return self
|
237
240
|
end
|
238
241
|
|
239
242
|
#===mixinしたインスタンスの位置を下端(y軸)に移動させる
|
240
|
-
|
243
|
+
#設置するとき、基準となる空間の内側に設置される
|
241
244
|
#ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動)
|
242
245
|
#ブロック引数は、自分自身の幅
|
243
246
|
#返却値:: 自分自身
|
244
247
|
def bottom!(&margin)
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
+
base = @layout.base.rect
|
249
|
+
t = @layout.pos[1]
|
250
|
+
@layout.pos[1] = base[1] + base[3] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0)
|
248
251
|
update_layout(0, @layout.pos[1]-t)
|
249
252
|
@layout.on_move.each{|block|
|
250
253
|
block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t)
|
251
254
|
}
|
252
|
-
|
255
|
+
return self
|
253
256
|
end
|
254
257
|
|
255
258
|
#===mixinしたインスタンスの位置を下端(y軸)に移動させる
|
256
|
-
|
259
|
+
#設置するとき、基準となる空間の外側に設置される
|
257
260
|
#ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動)
|
258
261
|
#ブロック引数は、自分自身の幅
|
259
262
|
#返却値:: 自分自身
|
260
263
|
def outside_bottom!(&margin)
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
+
base = @layout.base.rect
|
265
|
+
t = @layout.pos[1]
|
266
|
+
@layout.pos[1] = base[1] + base[3] + (margin ? margin[base[3]].to_i : 0)
|
264
267
|
update_layout(0, @layout.pos[1]-t)
|
265
268
|
@layout.on_move.each{|block|
|
266
269
|
block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t)
|
267
270
|
}
|
268
|
-
|
271
|
+
return self
|
269
272
|
end
|
270
273
|
|
271
274
|
#===インスタンスを画面(スナップ先インスタンス)の中心に移動する
|
@@ -277,137 +280,137 @@ module Miyako
|
|
277
280
|
end
|
278
281
|
|
279
282
|
#===mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す
|
280
|
-
|
281
|
-
|
283
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
284
|
+
#基準となる空間の内側に設置されたとして算出する
|
282
285
|
#ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動)
|
283
286
|
#ブロック引数は、自分自身の幅
|
284
287
|
#返却値:: 移動後の位置(Position構造体)
|
285
288
|
def left(&margin)
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
+
base = @layout.base.rect
|
290
|
+
pos = @layout.pos.dup
|
291
|
+
pos[0] = base[0] + (margin ? margin[base[2]].to_i : 0)
|
289
292
|
return pos
|
290
293
|
end
|
291
294
|
|
292
295
|
#===mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す
|
293
|
-
|
294
|
-
|
296
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
297
|
+
#基準となる空間の外側に設置されたとして算出する
|
295
298
|
#ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動)
|
296
299
|
#ブロック引数は、自分自身の幅
|
297
300
|
#返却値:: 移動後の位置(Position構造体)
|
298
301
|
def outside_left(&margin)
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
+
base = @layout.base.rect
|
303
|
+
pos = @layout.pos.dup
|
304
|
+
pos[0] = base[0] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0)
|
302
305
|
return pos
|
303
306
|
end
|
304
307
|
|
305
308
|
#===mixinしたインスタンスの位置を中間(x軸)に移動させたときの位置を返す
|
306
|
-
|
309
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
307
310
|
#返却値:: 移動後の位置(Position構造体)
|
308
311
|
def center
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
+
base = @layout.base.rect
|
313
|
+
pos = @layout.pos.dup
|
314
|
+
pos[0] = base[0] + (base[2] >> 1) - (@layout.size[0] >> 1)
|
312
315
|
return pos
|
313
316
|
end
|
314
317
|
|
315
318
|
#===mixinしたインスタンスの位置を右端(x軸)に移動させたときの位置を返す
|
316
|
-
|
317
|
-
|
319
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
320
|
+
#基準となる空間の内側に設置されたとして算出する
|
318
321
|
#ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動)
|
319
322
|
#ブロック引数は、自分自身の幅
|
320
323
|
#返却値:: 移動後の位置(Position構造体)
|
321
324
|
def right(&margin)
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
+
base = @layout.base.rect
|
326
|
+
pos = @layout.pos.dup
|
327
|
+
pos[0] = base[0] + base[2] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0)
|
325
328
|
return pos
|
326
329
|
end
|
327
330
|
|
328
331
|
#===mixinしたインスタンスの位置を右端(x軸)に移動させたときの位置を返す
|
329
|
-
|
330
|
-
|
332
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
333
|
+
#基準となる空間の外側に設置されたとして算出する
|
331
334
|
#ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動)
|
332
335
|
#ブロック引数は、自分自身の幅
|
333
336
|
#返却値:: 移動後の位置(Position構造体)
|
334
337
|
def outside_right(&margin)
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
+
base = @layout.base.rect
|
339
|
+
pos = @layout.pos.dup
|
340
|
+
pos[0] = base[0] + base[2] + (margin ? margin[base[2]].to_i : 0)
|
338
341
|
return pos
|
339
342
|
end
|
340
343
|
|
341
344
|
#===mixinしたインスタンスの位置を上端(y軸)に移動させたときの位置を返す
|
342
|
-
|
343
|
-
|
345
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
346
|
+
#基準となる空間の内側に設置されたとして算出する
|
344
347
|
#ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動)
|
345
348
|
#ブロック引数は、自分自身の幅
|
346
349
|
#返却値:: 移動後の位置(Position構造体)
|
347
350
|
def top(&margin)
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
+
base = @layout.base.rect
|
352
|
+
pos = @layout.pos.dup
|
353
|
+
pos[1] = base[1] + (margin ? margin[base[3]].to_i : 0)
|
351
354
|
return pos
|
352
355
|
end
|
353
356
|
|
354
357
|
#===mixinしたインスタンスの位置を上端(y軸)に移動させたときの位置を返す
|
355
|
-
|
356
|
-
|
358
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
359
|
+
#基準となる空間の外側に設置されたとして算出する
|
357
360
|
#ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動)
|
358
361
|
#ブロック引数は、自分自身の幅
|
359
362
|
#返却値:: 移動後の位置(Position構造体)
|
360
363
|
def outside_top(&margin)
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
+
base = @layout.base.rect
|
365
|
+
pos = @layout.pos.dup
|
366
|
+
pos[1] = base[1] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0)
|
364
367
|
return pos
|
365
368
|
end
|
366
369
|
|
367
370
|
#===mixinしたインスタンスの位置を中間(y軸)に移動させたときの位置を返す
|
368
|
-
|
371
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
369
372
|
#返却値:: 移動後の位置(Position構造体)
|
370
373
|
def middle
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
+
base = @layout.base.rect
|
375
|
+
pos = @layout.pos.dup
|
376
|
+
pos[1] = base[1] + (base[3] >> 1) - (@layout.size[1] >> 1)
|
374
377
|
return pos
|
375
378
|
end
|
376
379
|
|
377
380
|
#===mixinしたインスタンスの位置を下端(y軸)に移動させたときの位置を返す
|
378
|
-
|
379
|
-
|
381
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
382
|
+
#基準となる空間の内側に設置されたとして算出する
|
380
383
|
#ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動)
|
381
384
|
#ブロック引数は、自分自身の幅
|
382
385
|
#返却値:: 移動後の位置(Position構造体)
|
383
386
|
def bottom(&margin)
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
+
base = @layout.base.rect
|
388
|
+
pos = @layout.pos.dup
|
389
|
+
pos[1] = base[1] + base[3] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0)
|
387
390
|
return pos
|
388
391
|
end
|
389
392
|
|
390
393
|
#===mixinしたインスタンスの位置を下端(y軸)に移動させたときの位置を返す
|
391
|
-
|
392
|
-
|
394
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
395
|
+
#基準となる空間の外側に設置されたとして算出する
|
393
396
|
#ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動)
|
394
397
|
#ブロック引数は、自分自身の幅
|
395
398
|
#返却値:: 移動後の位置(Position構造体)
|
396
399
|
def outside_bottom(&margin)
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
+
base = @layout.base.rect
|
401
|
+
pos = @layout.pos.dup
|
402
|
+
pos[1] = base[1] + base[3] + (margin ? margin[base[3]].to_i : 0)
|
400
403
|
return pos
|
401
404
|
end
|
402
405
|
|
403
406
|
#===インスタンスを画面(スナップ先インスタンス)の中心に移動したときの位置を返す
|
404
|
-
|
407
|
+
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
405
408
|
#返却値:: 移動後の位置(Position構造体)
|
406
409
|
def centering
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
410
|
+
base = @layout.base.rect
|
411
|
+
pos = @layout.pos.dup
|
412
|
+
pos[0] = base[0] + (base[2] >> 1) - (@layout.size[0] >> 1)
|
413
|
+
pos[1] = base[1] + (base[3] >> 1) - (@layout.size[1] >> 1)
|
411
414
|
return pos
|
412
415
|
end
|
413
416
|
|
@@ -461,7 +464,7 @@ module Miyako
|
|
461
464
|
alias :layout_size :size
|
462
465
|
|
463
466
|
#===インスタンスのサイズをレイアウト情報に反映させる
|
464
|
-
|
467
|
+
#このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意
|
465
468
|
#_w_:: インスタンスの幅(たとえば、Sprite#ow の値)
|
466
469
|
#_h_:: インスタンスの幅(たとえば、Sprite#oh の値)
|
467
470
|
#返却値:: 自分自身を返す
|
@@ -508,7 +511,7 @@ module Miyako
|
|
508
511
|
end
|
509
512
|
|
510
513
|
#===すべてのインスタンスとの依存関係を解消する
|
511
|
-
|
514
|
+
#このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意
|
512
515
|
#返却値:: 自分自身を返す
|
513
516
|
def reset_snap
|
514
517
|
@layout.snap.sprite = nil
|
@@ -616,9 +619,9 @@ module Miyako
|
|
616
619
|
# 生成される線分は、x方向が[pos.x,pos.x+ow-1]、y方向が[pos.y,pos.y+oh-1]となる
|
617
620
|
#返却値:: 生成したSegments構造体インスタンス
|
618
621
|
def segment
|
619
|
-
|
622
|
+
return Segments.new([@layout.pos[0],
|
620
623
|
@layout.pos[0]+@layout.size[0]-1],
|
621
|
-
|
624
|
+
[@layout.pos[1],
|
622
625
|
@layout.pos[1]+@layout.size[1]-1])
|
623
626
|
end
|
624
627
|
end
|
data/lib/Miyako/API/modules.rb
CHANGED
@@ -86,6 +86,18 @@ module Miyako
|
|
86
86
|
return 0
|
87
87
|
end
|
88
88
|
|
89
|
+
#=== mixin されたインスタンスの部分矩形開始位置(x軸)を取得する
|
90
|
+
#返却値:: 部分矩形開始位置(デフォルトは0)
|
91
|
+
def ox=(v)
|
92
|
+
v
|
93
|
+
end
|
94
|
+
|
95
|
+
#=== mixin されたインスタンスの部分矩形開始位置(y軸)を取得する
|
96
|
+
#返却値::部分矩形開始位置(デフォルトは0)
|
97
|
+
def oy=(v)
|
98
|
+
v
|
99
|
+
end
|
100
|
+
|
89
101
|
#=== mixin されたインスタンスの部分矩形幅を取得する
|
90
102
|
#返却値:: インスタンスの幅(デフォルトは0)
|
91
103
|
def ow
|
@@ -98,6 +110,18 @@ module Miyako
|
|
98
110
|
return 0
|
99
111
|
end
|
100
112
|
|
113
|
+
#=== mixin されたインスタンスの部分矩形幅を取得する
|
114
|
+
#返却値:: インスタンスの幅(デフォルトは0)
|
115
|
+
def ow=(v)
|
116
|
+
v
|
117
|
+
end
|
118
|
+
|
119
|
+
#=== mixin されたインスタンスの部分矩形高を取得する
|
120
|
+
#返却値:: インスタンスの高さ(デフォルトは0)
|
121
|
+
def oh=(v)
|
122
|
+
v
|
123
|
+
end
|
124
|
+
|
101
125
|
#=== スプライトの部分矩形を返す
|
102
126
|
#返却値:: Rect構造体インスタンス(デフォルトはnil)
|
103
127
|
def part_rect
|
@@ -284,7 +308,7 @@ module Miyako
|
|
284
308
|
#_v_:: 設定する値(true/false)
|
285
309
|
#返却値:: 自分自身を返す
|
286
310
|
def visible=(v)
|
287
|
-
self.
|
311
|
+
self.each{|e| e.visible = v if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
288
312
|
return self
|
289
313
|
end
|
290
314
|
|
@@ -308,9 +332,9 @@ module Miyako
|
|
308
332
|
#返却値:: 自分自身を返す
|
309
333
|
def move!(dx, dy)
|
310
334
|
if block_given?
|
311
|
-
self.
|
335
|
+
self.each_with_index{|e, i| e.move!(*(yield e, i, dx, dy)) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
312
336
|
else
|
313
|
-
self.
|
337
|
+
self.each{|e| e.move!(dx, dy) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
314
338
|
end
|
315
339
|
self
|
316
340
|
end
|
@@ -335,9 +359,9 @@ module Miyako
|
|
335
359
|
#返却値:: 自分自身を返す
|
336
360
|
def move_to!(x, y)
|
337
361
|
if block_given?
|
338
|
-
self.
|
362
|
+
self.each_with_index{|e, i| e.move_to!(*(yield e, i, x, y)) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
339
363
|
else
|
340
|
-
self.
|
364
|
+
self.each{|e| e.move_to!(x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
341
365
|
end
|
342
366
|
self
|
343
367
|
end
|
@@ -346,7 +370,7 @@ module Miyako
|
|
346
370
|
#各要素のstartメソッドを呼び出す
|
347
371
|
#返却値:: 自分自身を返す
|
348
372
|
def start
|
349
|
-
self.
|
373
|
+
self.each{|sprite| sprite.start if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
350
374
|
return self
|
351
375
|
end
|
352
376
|
|
@@ -354,7 +378,7 @@ module Miyako
|
|
354
378
|
#各要素のstopメソッドを呼び出す
|
355
379
|
#返却値:: 自分自身を返す
|
356
380
|
def stop
|
357
|
-
self.
|
381
|
+
self.each{|sprite| sprite.stop if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
358
382
|
return self
|
359
383
|
end
|
360
384
|
|
@@ -362,7 +386,7 @@ module Miyako
|
|
362
386
|
#各要素のresetメソッドを呼び出す
|
363
387
|
#返却値:: 自分自身を返す
|
364
388
|
def reset
|
365
|
-
self.
|
389
|
+
self.each{|sprite| sprite.reset if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
366
390
|
return self
|
367
391
|
end
|
368
392
|
|
@@ -370,9 +394,7 @@ module Miyako
|
|
370
394
|
#各要素のupdate_animationメソッドを呼び出す
|
371
395
|
#返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
|
372
396
|
def update_animation
|
373
|
-
self.
|
374
|
-
e.update_animation
|
375
|
-
}
|
397
|
+
self.map{|e| (e.class.include?(SpriteBase) || e.class.include?(SpriteArray)) ? e.update_animation : false }
|
376
398
|
end
|
377
399
|
|
378
400
|
#===指定した要素の内容を入れ替える
|
@@ -393,7 +415,7 @@ module Miyako
|
|
393
415
|
#描画するインスタンスは、SpriteBaseモジュールがmixinされているクラスのみ
|
394
416
|
#返却値:: 自分自身を帰す
|
395
417
|
def render
|
396
|
-
self.
|
418
|
+
self.each{|e| e.render if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
397
419
|
return self
|
398
420
|
end
|
399
421
|
|
@@ -402,9 +424,34 @@ module Miyako
|
|
402
424
|
#_dst_:: 描画対象の画像インスタンス
|
403
425
|
#返却値:: 自分自身を帰す
|
404
426
|
def render_to(dst)
|
405
|
-
self.each{|e| e.render_to(dst) }
|
427
|
+
self.each{|e| e.render_to(dst) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
406
428
|
return self
|
407
429
|
end
|
430
|
+
|
431
|
+
#===位置を指定して画面への描画を指示するメソッドのテンプレート
|
432
|
+
#オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する
|
433
|
+
#基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、
|
434
|
+
#これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり
|
435
|
+
#ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す
|
436
|
+
#_x_:: 描画位置のx座標
|
437
|
+
#_y_:: 描画位置のy座標
|
438
|
+
#返却値:: 自分自身を返す
|
439
|
+
def render_xy(x, y)
|
440
|
+
return self.each{|e| e.render_xy(x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
441
|
+
end
|
442
|
+
|
443
|
+
#===位置を指定して画像への描画を指示するメソッドのテンプレート
|
444
|
+
#オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する
|
445
|
+
#基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、
|
446
|
+
#これらのメソッドを呼び出して同じ動作を行うが、処理速度的に課題あり
|
447
|
+
#ただし、上記のメソッドを持っていない場合は、単純にrender_toメソッドを呼び出す
|
448
|
+
#_dst_:: 対象の画像
|
449
|
+
#_x_:: 描画位置のx座標
|
450
|
+
#_y_:: 描画位置のy座標
|
451
|
+
#返却値:: 自分自身を返す
|
452
|
+
def render_xy_to(dst, x, y)
|
453
|
+
return self.each{|e| e.render_xy_to(dst, x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
454
|
+
end
|
408
455
|
end
|
409
456
|
|
410
457
|
#==ディープコピーを実装するモジュール
|