サンプル 07: ボタン


ソースは以下になります。

 
     1	#!/usr/local/bin/ruby
     2	
     3	# ボタンのテストをしてみよう 
     4	
     5	require 'ming'
     6	# include Ming
     7	
     8	# --- ボタンを作る
     9	
    10	def makeRect(width, height, r, g, b)     ← 四角を生成する関数
    11	  s = SWFShape.new;
    12	  ox = - width/2;
    13	  oy = - height/2;
    14	
    15	  s.setRightFill(s.addFill(r, g, b));
    16	  s.movePenTo(ox, oy);
    17	  s.drawLine(width, 0);
    18	  s.drawLine(0, height);
    19	  s.drawLine(- width, 0);
    20	  s.drawLine(0, - height);
    21	
    22	  return s;                              ← SWFShapeオブジェクトを返す
    23	end
    24	
    25	def create_button(width,height)          ← ボタンを生成する関数
    26	
    27	  b=SWFButton.new;
    28	
    29	  # ボタンに表示できるのは、Shapeクラスのオブジェクトだけ。
    30	  # だから、実質レクタングルかビットマップになる。
    31	  b.setUp(makeRect(width+20, height+10, 0xff, 0, 0));
    32	  b.setOver(makeRect(width+20, height+10, 0, 0xff, 0));
    33	  b.setDown(makeRect(width+20, height+10, 0, 0, 0xff));
    34	  b.setHit(makeRect(width+20, height+10, 0, 0, 0));
    35	
    36	  return b;
    37	end
    38	
    39	
    40	# set_scale(1.0)
    41	
    42	m = SWFMovie.new;
    43	m.setDimension(400,400);
    44	m.setRate(10);
    45	
    46	# --------
    47	
    48	# ボタンを作る。本当はこの中で表示文字を指定したいけれど、できない
    49	b = create_button(200,50);
    50	
    51	i = m.add(b);
    52	i.moveTo(200,200);
    53	
    54	# ボタンに文字を表示したい場合は、別途上から書かないといけない。
    55	f = SWFFont.new("OmegaSerif88591-B.fdb");
    56	t = SWFText.new;
    57	t.setFont(f);
    58	t.setColor(0, 0, 0);
    59	t.setHeight(48);
    60	
    61	width = 200; 
    62	height = 50;
    63	
    64	t.moveTo(- width/2, height/2);
    65	t.addString("PUSH");                ← 文字を表示   
    66	
    67	i = m.add(t);
    68	i.moveTo(200,200);
    69	
    70	m.save('example07.swf');


ボタンはSWFButtonクラスで生成します。 メソッド一覧は こちら。 指定できるのは「通常時」「マウス通過時」「押された時」の画像です。画像は Shapeだけという点に注意。MovieClipやTextは置けません。MovieClipを置きたい 場合は、MovieClipを生成してその上にButtonを置くことになります。 TextはなんとなくButtonの上に置いてみれば良いです。
押された時などの挙動はaddActionメソッドで記述できます。 これはボタンアクションと言い、ActionScriptで記述することになります。 上記の例は何も記述していないので、何もしません。あくまでActionScriptを 使わない例なので。
Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Fri Dec 26 18:26:46 JST 2003