2011-01-20 6 views
1

XPCEで簡単なアニメーションを書くつもりです(正確にはfour glasses puzzle)。 XPCEについては何も知りませんので、チュートリアルを参照しましたが、結果は残念です。誰もが次のいくつかの材料に私を指すことができます:XPCEチュートリアルを探す

  • 「キャンバス」
  • アニメーション
  • タイマー

EDITでの作業:さて、ここではより詳細な問題だ:私がしたいです2つのボックスを描き、2秒待って、ボックスを隠してから、タイマーを開始します。

new(@box1, box(100,100)), 
send(W, display, @box1), 
new(@box2, box(100,100)), 
send(W, display, @box2, point(200, 200)), 

% wait two seconds here 
% hide the boxes here 

new(Msg1, and(message(B1, relative_move, point(5, 0)), 
       message(B4, relative_move, point(0, 5)))), 
send(W, attribute, attribute(timer, new(T, timer(0.1, Msg1)))), 

send(T, start), 

EDIT 2:これは私が使用しているコードです:

get_file(0, 'glass.gif'). 
get_file(180, 'glass180.gif'). 

main(GA, GB, GC, GD) :- % e.g. main(0,0,180,0). 
    new(B1, figure), 
    get_file(GA, G1), 
    send(B1, display, new(BM1, bitmap(G1))), 
    send(BM1, transparent, @on), 
    send(W, display, B1, point(0,0)),  

%analogically for the other three glasses 

私は新しいを設定したいと思いますさて、ここでもう一つの質問は(?私は新しい質問を開く必要があります)ですB1のビットマップ。それ、どうやったら出来るの? BM1を変更すれば十分でしょうか?あるいは、代替の解決法がありますか?私は直立と逆メガネの両方をスクリーンから外して交換することを考えていましたが、そのような解決策の詳細についてはわかりません。

EDIT2 ':解決しました。後世のため:

send(B1, clear), 
send(B1, display, bitmap('glass_while_animating_1.gif')), 
send(timer(0.1), delay), 
send(B1, clear), 
send(B1, display, bitmap('glass_while_animating_2.gif')), 
% etc 
+0

「キャンバス」を使って作業することについて、もう少し説明してください。イメージリソースを開発するためのツールについて考えていますか?それとも、「ウィンドウ」をコントロールするのと同じですか? – hardmath

+0

キャンバスとは、私が幾何学的な図形を描き、イメージを描くことができる領域を意味します。私はいくつかのテストを行いました。私は今、 'window'を使って作業しています。私はそれが正しい構造であるかどうかは分かりませんが、これまでのところうまくいきます。私の目標は、(.gifまたは.pngファイルから)いくつかのメガネを移動し、一時停止し、私が反転しているものの上に矢印を置いてから、繰り返すことです。 – Igor

+0

XPCEデモのジョグラーとカンガルーのアニメーションを見ましたか? – hardmath

答えて

0

この検索可能なPDFは役に立ちますか?

link text

"第5章シンプルなグラフィックス" 絵を語る(すなわち。キャンバス)。

260ページには、遅延を導入するためのタイマーの使用例があり、266ページには点滅するグラフィックのタイマーの使用例が示されています。

「グラフィック→フラッシュ」を使用して明示的に強制的に強制的に強制的に強制終了することについての説明があります。

関連する問題