C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: アニメーションさせながら移動するには。


(過去ログ 19 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■7704 / inTopicNo.1)  アニメーションさせながら移動するには。
  
□投稿者/ 星 (1回)-(2007/09/13(Thu) 11:51:15)

分類:[C#] 



VisualBasic2005、C#で作成しています。

現在
1、エンターキーを押す
2、画像が32ビット横に動きながら4枚の絵をアニメーションする

というのを作成したいのですが。混乱してなかなかうまくいきません。
どうしたらうまくいくのでしょうか…
よろしくお願いいたします。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace アニメーション
{
    public partial class Form1 : Form
    {
        private Bitmap bmp;
        private Rectangle[] rect = new Rectangle[4];
        private int m = 0,step = 0,x=0;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bmp = new Bitmap("anime .png");
            rect[0] = new Rectangle(0, 0, 134, 193);
            rect[1] = new Rectangle(134, 0, 134, 193);
            rect[2] = new Rectangle(268, 0, 134, 193);
            rect[3] = new Rectangle(402, 0, 134, 193);
             
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.DrawImage(bmp, x, 0, rect[m], GraphicsUnit.Pixel);
        }

        private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {

            if (e.KeyCode == Keys.Enter)
            {
                while (x % 32 != 0)
                {
                    m = (x % 32) / 8;
                    x++;
                    Invalidate();

                }
               x++; 
            }  
        }
    }
}

引用返信 編集キー/
■7707 / inTopicNo.2)  Re[1]: アニメーションさせながら移動するには。
□投稿者/ オノデラ (19回)-(2007/09/13(Thu) 13:25:59)
オノデラ さんの Web サイト
 答えではないのですが、ちょっとわからないところがあるので質問させてください。

1.Enter キーを1回押すごとに1ループのアニメーションでよろしいでしょうか?

2.何回もアニメーションさせると画像が画面の外に行きそうな気がするのですが、それでもいいのでしょうか。

3.アニメーション中にもう1回 Enter キーを押したときの動作はどのようにするつもりでしょうか?


 今回の投稿内容を見た点として修正すべき場所は Enter キーを押したときの処理ですね。
 おそらくこのプログラムだとアニメーションが一瞬で終了してしまうので、ループ中になんらかの待ち時間を入れる必要があると思います。適度に時間を計って「Application.DoEvent」メソッドなどで待ち時間を作る方法になるでしょうか。

 またはタイマー(Timer)を使って更新間隔を設定し、アニメーションが終わったらタイマーを無効にするっていう方法もあるかもしれませんね。
引用返信 編集キー/
■7708 / inTopicNo.3)  Re[2]: アニメーションさせながら移動するには。
□投稿者/ 星 (3回)-(2007/09/13(Thu) 13:45:27)
No7707 (オノデラ さん) に返信
お答えいただいてありがとうございます。

> 1.Enter キーを1回押すごとに1ループのアニメーションでよろしいでしょうか?
 はい、Enterを1回押すとオートで32ビット進みながらアニメーションしてほしいのです。

> 2.何回もアニメーションさせると画像が画面の外に行きそうな気がするのですが、それでもいいのでしょうか。
 はい、それでもいいです。

> 3.アニメーション中にもう1回 Enter キーを押したときの動作はどのようにするつもりでしょうか?
 その動作は無視、もしくはキーが押された分だけ32ビットずつ進む、かなと思っています

>  今回の投稿内容を見た点として修正すべき場所は Enter キーを押したときの処理ですね。
>  おそらくこのプログラムだとアニメーションが一瞬で終了してしまうので、ループ中になんらかの待ち時間を入れる必要があると思います。適度に時間を計って「Application.DoEvent」メソッドなどで待ち時間を作る方法になるでしょうか。
>
>  またはタイマー(Timer)を使って更新間隔を設定し、アニメーションが終わったらタイマーを無効にするっていう方法もあるかもしれませんね。

32ビットを4に分けて8ビット進むごとに絵が切り替わる、としたかったのですが…試行錯誤してみます。


引用返信 編集キー/
■7710 / inTopicNo.4)  Re[3]: アニメーションさせながら移動するには。
□投稿者/ オノデラ (20回)-(2007/09/13(Thu) 13:58:50)
オノデラ さんの Web サイト
> 32ビットを4に分けて8ビット進むごとに絵が切り替わる、としたかったのですが…

 これについては特に問題ないかと思います。さっき私が書いたとおり時間的な問題になるのではないかと。

> その動作は無視、もしくはキーが押された分だけ32ビットずつ進む、かなと思っています

 無視する場合はフラグかなんかを立てて制御し、キーが押された分だけの場合はキーを押した数をカウントするような形になるのではないでしょうか。
引用返信 編集キー/
■7729 / inTopicNo.5)  Re[1]: アニメーションさせながら移動するには。
□投稿者/ Jitta on the way (8回)-(2007/09/13(Thu) 19:23:13)
0 ÷ 32 = 0
ってだけじゃない?
x の初期値を 1 にすればよいかと




つか


デバッグしようよ
引用返信 編集キー/
■7796 / inTopicNo.6)  Re[2]: アニメーションさせながら移動するには。
□投稿者/ 星 (4回)-(2007/09/14(Fri) 21:30:02)
タイマ等を入れたところそれらしいものが出来ました!
ありがとうございました!
解決済み
引用返信 編集キー/
■7798 / inTopicNo.7)  Re[3]: アニメーションさせながら移動するには。
□投稿者/ ぽぴ王子 (265回)-(2007/09/15(Sat) 07:30:00)
ぽぴ王子 さんの Web サイト
No7796 (星 さん) に返信

とりあえずアレだ、ATOKに乗り換え(ry

まちがえた。

とりあえずアレだ、ビットとドットの区別をちゃんとした方がいいね。
正しい言葉を使わないと相手に伝わらないから。
あと、デバッグしようよ((c)Jittaさん)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -