![]()
2010.05.21 CHIKATHREESIX
2010.04.16 KNOCKKNOCK
2010.03.08 TAKAIW
2010.02.01 CHIKATHREESIX
2010.01.28 TAKAIW
![]()
![]()
KNOCKKNOCK (10件)小遣い2万円のフラッシュデベロッパー。
帰りが遅いのにキレる嫁をだましだまし制作中・・・。
TAKAIW (13件)フラッシュデベロッパー。遊びでゲームを作るのも好きです。外見に似合わないイラストを描くのも好きです。とにかく作るのが好きです。
CHIKATHREESIX (8件)メタル界のフラッシュデベロッパー。またある時はメタルギタリスト。オーサリング中もヘッドバンギングは絶やさない。
YANBOU (6件)犬と猫で、家が毎日運動会のフラッシュデベロッパー。
ビールから発泡酒へ変更で節約中。
AKUZE (2件)2003年からユナイティアに寄生しているフラッシュデベロッパー。
シルクドソレイユとカナダが好き。
DECO-DEKAI (1件)ビートダウンパートでご飯何杯も食べられます。
ハードコア・テクニカルディレクターを目指して日々精進。
![]()
HOME > Flash DeveloperのためのSilverlight+C# (1)
MovieClip(表示オブジェクト)の対応
SilverlightをやるためにC#と奮闘中です。
Silverlightをやってみたいが、C#のAPIを
調べるのがメンドクサイという方のために
これからメモ代わりに掲載してゆきたいと思います。
まだまだ始めたばかりで間違いもあるかもしれませんが
よろしくおねがいします。
Silverlight向け .NET Frameworkライブラリ
http://msdn.microsoft.com/ja-jp/library/cc838194(VS.95).aspx
ActionScriptでもっとも重要なクラスとは
と聞かれると、ほとんどの人がMovieClipクラスと
答えると思います。(AS3では「表示オブジェクト」
と答える人もいると思いますが...)
Silverlightでは表示オブジェクトがどうなっているのか?
FlashではMovieClipはタイムライン上で配置できる
静的配置とコード上でインスタンスを生成する
動的配置があります。
最初のドキュメント生成は下記を参照ください。
http://ua-labo.com/#/pid000026
上記の方法でプロジェクトを
生成すると
App.xaml・App.xaml.csと
Page.xaml・Page.xaml.csが自動生成されます。
App.xamlおよびApp.xaml.csはまだ深く突っ込んでいませんが、Applicationというクラスの
サブクラスですので、Silverlightアプリを
司るクラスのようです。
App.xaml.cs
using System.Windows;
using System;
namespace Sample0906
{
public partial class App : Application
{
public App()
{
this.Startup += this.OnStartup;
this.Exit += this.OnExit;
this.UnhandledException += this.Application_UnhandledException;
InitializeComponent();
}
private void OnStartup(object sender, StartupEventArgs e)
{
// メイン コントロールをここに読み込みます
this.RootVisual = new Page();
}
private void OnExit(object sender, EventArgs e)
{
}
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
// デバッガの範囲外でアプリケーションが実行されている場合、ブラウザの
//例外機能を使用して例外が報告されます。IE では、この例外はステータス バーの
//黄色の警告アイコンで示されます。Firefox では、スクリプト エラーが表示されます。
if (!System.Diagnostics.Debugger.IsAttached)
{
// メモ: これにより、例外がスローされたが処理されなかった場合でも、
//アプリケーションは実行を継続できます。
// 実稼働アプリケーションでは、このエラー処理を、他の機能 (Web サイトへエラーを報告し、
//アプリケーションを停止するような機能) に置き換える必要があります。
e.Handled = true;
Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
}
}
private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
{
try
{
string errorMsg = e.ExceptionObject.Message + @"\n" + e.ExceptionObject.StackTrace;
errorMsg = errorMsg.Replace("\"", "\\\"").Replace("\r\n", @"\n");
System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");");
}
catch (Exception)
{
}
}
}
}
App.xaml
Page.xaml.csがFlashCS3でいうドキュメントクラスです。
Page.xaml.csつまりPageクラス
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace Sample0906
{
public partial class Page : UserControl
{
public Page()
{
// 変数を初期化するときに必要となります
InitializeComponent();
}
}
}
Page.xaml
Page.xamlがタイムラインみたいなもので、下記のようにApp.xaml.cs内でルート指定してます。(OnStartUpはアプリ開始のイベントみたいなものです。)
private void OnStartup(object sender, StartupEventArgs e) {
// メイン コントロールをここに読み込みます
this.RootVisual = new Page();
}
静的配置→XAMLで設定
タイムライン的なもの→XAMLで設定
動的配置→newで作成
GridとCanvasですが、GridはFlashにはありません。
CanvasがSpriteみたいなものです。
つまりこういう風に書きます。
■子表示オブジェクトの追加
ActionScript
var sp:Sprite = new Sprite(); var sp2:Sprite = new Sprite(); sp.addChild(sp2); sp.removeChild(sp2);
C#
Canvas canvas = new Canvas(); Canvas canvas2 = new Canvas(); canvas.Children.Add(canvas2); canvas.Children.Remove(canvas2);
先ほども述べましたがUserControlには子表示オブジェクトが
1つしか設定できないため、私はUserControl.ContentにCanvasを
設定し、そこにどんどん子表示オブジェクトを追加しています。
■座標の設定
ActionScript
sp2.x = 100; sp2.y = 200;
C#
Canvas.setLeft(canvas2,100); Canvas.setTop(canvas2,200);
※staticです。
■座標の参照
ActionScript
var x:Number = sp2.x; var y:Number = sp2.y;
C#
double x = Canvas.getLeft(canvas2); double y = Canvas.getTop(canvas2);
■アルファ
ActionScript
sp2.alpha = 0.5;
C#
canvas2.Opacity = 0.5;
■mouseEnabledについて
ActionScript
sp.mouseEnabled = true;
C#
canvas.IsHitTestVisible = true;
(UIElementクラスのプロパティのようです)
※デフォルトではtrueです。
分かってきたらこの部分は更新してゆきます。
■今回のクラス

TAKAIWフラッシュデベロッパー。遊びでゲームを作るのも好きです。外見に似合わないイラストを描くのも好きです。とにかく作るのが好きです。