6

私は、Silverlightでのゲーム用に掃海艇のようなレイアウトを設計しています。現在、squareコントロールでユーザーコントロールを使用していますCanvas。それに割り当てられたプロパティがあります。また、後の段階で機能を追加したいと思います。これは、ベジェ曲線を使用して曲線を描き、ループするのではなく、x、y座標を使用してこれらの正方形を曲線上にプロットすることです。次に、正方形のx、y位置をXMLファイルで送信します。

私の質問は、最小のメモリ消費、高速で効率的なパフォーマンス、および簡単な実装の観点から、最適化された最適な組み合わせをどのように使用すればよいかということです。あなたの専門家が他のアイデアを持っているなら、私に知らせてください。前もって感謝します。!

4

2 に答える 2

2

すべてを図形や画像(つまり、ベクターグラフィックス)として描画でき、グラフィック要素のハードウェアアクセラレーションを利用できる場合。また、正方形をUserControlsとして定義しない場合は、パフォーマンスが向上します。コード内で他の形状を含む形状として動的に作成し、その位置に基づいて形状にリンクされたオブジェクトモデルを作成する必要があります(例:辞書の正方形;辞書のsquareElements)。

メモリ消費とファイルアクセスの観点から、正方形のx、y位置をポイント構造としてメモリ内に保持し、必要な場合(つまり、プレーヤーがゲームを終了するとき)にのみファイルにシリアル化する必要があります(XMLは問題ありません)。

于 2012-05-25T15:47:45.747 に答える
2

ええと、何日もかけて、私は自分で答えを整理しました。ユーザーコントロールを続行しSquare、レイアウトで使用しました。

x / y位置のプロットについて、私はこれを使用しました:

Point point = myElement.TransformToVisual(App.Current.RootVisual as FrameworkElement)).Transform(new Point(0, 0));

Silverlight 4はブラウザー内アプリケーションに昇格された特権を与えないため、XMLファイルの保存に問題がありました。しかし、それから私は私の保存ボタンクリックイベントでこれを使用しました:

        SaveFileDialog dlgSave = new SaveFileDialog();
        dlgSave.DefaultExt = "xml";
        dlgSave.Filter = "XML Files (XML)|*.xml;";
        dlgSave.FilterIndex = 1;
        strXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + myXML.ToString();//myXML is the XDocument I created globally and saved data in it
        try
        {
            bool check = (bool)dlgSave.ShowDialog();
            if (check)
            {
                using (Stream stream = dlgSave.OpenFile())
                {
                    StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.UTF8);
                    sw.Write(strXML);
                    sw.Close();
                    stream.Close();
                }
                MessageBox.Show("XML Saved successfully");
            }
            catch (SecurityException)
            {
                MessageBox.Show("There seems to be an issue with saving XML file on the disk, please try again...", "Something's not right", MessageBoxButton.OK);
            }
            catch (UnauthorizedAccessException)
            {
                MessageBox.Show("Saving here requires authorised permissions", "Access Denied", MessageBoxButton.OK);
            }
于 2012-07-02T06:46:41.640 に答える