2011-04-04
■
ContextMenuのMenuItemのへのデータバインディングはDateTmeplateでもHierarchicalDataTemplateでもなくStyleでよかった。DateTmeplateにしてしまうとMenuItemのContentの中にもうひとつMenuItemができてしまう。
ただし、セパレータの指定は別。例えばMenuItemViewModel内のプロパティをもとにStyleSelectorで振り分けるとすでにMenuItemなっているからSeparator型で指定するとエラーになってしまう。SeparatorはItemTmeplateSelectorでSeparatorだけ入ったDateTmeplateを指定すればいい。
CommandParameter
XAML側
------------------------------------------------------------
CommandParameter="{Binding ElementName=MyTextBox, Path=Text}"
------------------------------------------------------------
ViewModel側
------------------------------------------------------------
SayHelloCommand = new RelayCommand<string>(
mytext => MessageBox.Show("Hello, " + mytext), // 実行するコマンドの方
mytext => _counter % 2 == 0 // CanFuncの方(RaiseCanExecuteChanged()から更新される)
);
------------------------------------------------------------
------------------------------------------------------------
SayHelloCommand = new RelayCommand<TextBox>( // FrameworkElementごと渡す
t => t.Text = Counter.ToString()
);
------------------------------------------------------------
2010-02-21
スクリーンフォントの縁を滑らかにする
Visual Studioをインストールして設定画面を
開いてみるとフォントがかくかくしている!Windows7なのに!メイリオUIは?
システムの詳細設定を色々きったからだろうからもとにもどしてたら
『スクリーンフォントの縁を滑らかにする』が原因だった。
文字の奇麗さを表すには滑らかっていうのか
2010-02-13
|● |● |●===>●|
モックアップを作るときはタイムラインで全ての画面を入れてくと破綻してくる。
あの画面間にフローを追加したいときとかもうわけわかんなくなる。
なので、Ajax的な遷移も含めた画面単位のシンボルを作成する。
画面内のミニ遷移は15frame毎に作成する(ミニ遷移のトランジションなら0.1sで充分)
画面間はトランジションはだいたい0.4sとか。
2010-01-16
Eventの発行
こんな簡単なことも忘れてる!
半年経つと感覚取り戻すのに準備が必要だなぁ
(OnEventパターンは後で復習する)
//Chlid側
public event EventHandler hoge;
hoge(this, new EventArgs());
//Parent側
Chlid.hoge += delegete(sender, eventData)
{
// todo
}
2009-10-31
Vector
new Vector()[]の初期化子に値を入れるとうまく値が入らない。ってFlexSDK3.4だけの仕様なのかな?
Vectorにキャストする場合にはnewを使わずにトップレベル関数を使っておこう。
2009-08-10
error stray '200' in program
▼エラーコード
error stray '200' in program
▼原因
全角スペースがclassとクラス名の間に使用されていたから
そんなのぱっと見じゃわかんないよ!
しかもimport先でエラーが出てるし
メソッドが呼び出さないのはラベルが大文字だったから
willAnimateSecondHalfOfRotationFromInterfaceOrientationメソッドが呼ばれないなぁと思っていたら
引数(ラベル)の「duration」が「Duration」になっていたからだった。
2009-08-02
error: expected ']' before ';' token
;が足りないのかなぁって探していたらヘッダファイルの#defineの行末に「;」のあったのが原因でした。
余分なトークンがあるって場合にもそういうエラーを出すんだね。
2009-07-01
挿入とリンク
で貼り付けた画像がオリジナルの方で変更された時にいつになったら反映されるんだ!って思ったらパワポを再起動させる、とさ。
そんなん!右クリックに用意しとけよってか書いとけよ!
しかもリンクされているかどうか確認のしようがないなんて><
2009-03-22
Blend 3 Previewのマウスホイール設定
アートワークでマウスをホイールするとズーム倍率が変わってしまう。
[ホイール=アートワークを上下に移動]にしたかったのだけれどデフォルトがズームになってしまった><
イラレとか行き来するんだから倍率はCtrlキー併用時にさせたい。
[Tools]>[Options]>[Artboard]>[Mouse wheel]
プルダウン(コンボボックス?)から[Ctrl + mouse wheel]を選択する。
2009-03-08
2009-01-25
System.Web.HttpUtility.UrlEncode
の参照なのだけれども、UsingでSystem.Webを設定してもインテリセンスに出てくれない。
そこでSystem.Webのversion2.0を参照設定で追加すると出てきてくれた!
匿名メソッド => ラムダ式
MyFunction f3 = delegate(int x) { return x * 3; };
MyFunction f4 = (int x) => { return x * 3; };
MyFunction f4 = (int x) => return x * 3;
MyFunction f4 = (int x) => x * 3;
MyFunction f4 = (x) => x * 3;
MyFunction f4 = x => x * 3;
2008-11-02
Conditional( "DEBUG" )
[Conditional( "DEBUG" )]アトリビュートをメソッドの上に書いておくと、メソッドがリリースの時にコンパイルに含まれないよ。
けれどVisual Express EditionだとデフォルトでDEBUGディレクティブが有効になっているからConditionalに関係なく実行されてしまう。
だからプロジェクトのプロパティからDEBUGディレクティブを無効にするんだけれど、それは面倒だ><。
//#define DEBUG //#undef DEBUG using System.Diagnostics; using System.Windows; namespace WpfApplication1 { /// <summary> /// Window1.xaml の相互作用ロジック /// </summary> public partial class Window1 : Window { /// <summary> /// コンストラクタ /// </summary> public Window1() { InitializeComponent(); this.Loaded += new RoutedEventHandler(Window1_Loaded); } /// <summary> /// 初期化時に実行する /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Window1_Loaded(object sender, RoutedEventArgs e) { NewMethod(); debugMethod( "test" ); } /// <summary> /// 単純なコンソール文を出力する /// </summary> private void NewMethod() { Debug.WriteLine( "call Window1_Loaded." ); textBlock1.Text += "call Window1_Loaded.\n"; } /// <summary> /// [Conditional( "DEBUG" )]確認用メソッド /// </summary> /// <param name="pram"></param> [Conditional( "DEBUG" )] void debugMethod(string pram) { Debug.WriteLine( "call debugMethod." ); textBlock1.Text += "call debugMethod => " + pram + "\n"; } } }
2008-07-01
Becky!のメーリングリストマネージャー
- [ツール]<[メーリングリストマネージャー]
- [追加]を押下
- メーリングリスト名はただのラベル
- [投稿先],[コマンドあて先]にMLのアドレスをこぴぺ
- テンプレートを使いたいときにはコマンド用テンプレートの(例えば)参加を押下
- ポップアップした画面に%T{%Y/%m/%d(%a)}などを入れていく
- [関連フォルダ]で使っていきたいフォルダを指定する
- これで指定したフォルダを右クリックのメーリングリストの(例えば)参加を押下すると、先ほどの入力した宛先とテンプレートが入力された状態で新規作成画面が表示する
終わり
2008-06-16
画像の比率を維持したまま、解像度指定しないまま切り抜き。
PhotoShipでは出来なかったからFireworks。
【未解決】
- マーキーツールのスタイルを固定比(例えば4と3)
- マーキーツールで範囲を指定
- 指定したまま切り抜きツールを選択
- ENTER
- その切り抜きヒストリを保存(コマンド)する
- そのコマンドを実行 OR ファイルのバッチ処理の中にさっき保存したバッチがあるからそれを実行
最初に切り抜きしたサイズに揃ってしまう。
スクリプトを書くしかないのか。
2008-06-09
徐々にアルファ
とあるオブジェクトAを作ってコピーしておく。
Aに不透明マスクを作成して、透明パネル内の右の四角をクリックして、Aをペーストする。
右Aのグラデーションを円形(or線形)にする。
あとはグラデーションツールで調整する。(黒が透明?)
このままじゃ透明マスク編集のままなので左の四角をクリックする。
不透明マスクを作らずに乗算だけで出力すると透明なはずだったところが白になってる。
2008-05-29
sliderのEvent
ySlider_Loaded ←初期読み込み
mySlider_SizeChanged
mySlider_LayoutUpdated
mySlider_MouseEnter ←スライドバーに入る
mySlider_LayoutUpdated
mySlider_MouseMove ←通り過ぎる
mySlider_MouseMove ←通り過ぎる
・
mySlider_MouseMove ←通り過ぎる
mySlider_MouseMove ←通り過ぎる
mySlider_MouseLeave ←スライドバーから離れる
mySlider_LayoutUpdated
mySlider_MouseEnter ←スライドバーに入る
mySlider_LayoutUpdated
mySlider_MouseMove
mySlider_MouseMove
mySlider_MouseLeftButtonDown ←ボタン?をドラックして値を動かす
mySlider_LayoutUpdated
mySlider_GotFocus
mySlider_LayoutUpdated
mySlider_ValueChanged
mySlider_MouseMove
mySlider_LayoutUpdated
mySlider_ValueChanged
mySlider_MouseMove
mySlider_LayoutUpdated
mySlider_ValueChanged
mySlider_MouseMove
mySlider_LayoutUpdated
mySlider_MouseLeftButtonUp ←ドラック終わる
mySlider_LayoutUpdated
mySlider_MouseMove
mySlider_MouseLeave ←スライドバーから離れる
mySlider_LayoutUpdated
mySlider_LostFocus
mySlider_LayoutUpdated
mySlider_MouseEnter ←スライドバーに入る
mySlider_MouseMove
mySlider_LayoutUpdated
mySlider_MouseMove
mySlider_MouseMove
mySlider_MouseMove
mySlider_ValueChanged ←スライドバーのボタン以外をクリック
mySlider_MouseLeftButtonDown
mySlider_LayoutUpdated
mySlider_GotFocus
mySlider_LayoutUpdated
mySlider_MouseLeftButtonUp
mySlider_LayoutUpdated
mySlider_MouseMove
mySlider_MouseMove
mySlider_MouseLeave ←スライドバーから離れる
2008-05-18
importの構成
どうやってasの管理をしてるんだろう
[project]>test.fla
[project]>[com]>[test]>[Main]>Import.as
[project]>[com]>[test]>[A]>A.as
[project]>[com]>[test]>[B]>B.as
test.flaからImport.asを、
com.test.Main.Import
的にドキュメントクラスに指定する。
そのImport.asは
package com.test.Main{
import com.test.A.A;
import com.test.B.B;
import flash.display.Sprite;
public class Import extends Sprite
{
public function Import()
{
trace("import")
var a:A = new A(this)
a.hoge()
var b:B = new B
b.oyaHoge()
b.hoge()
}
// インスタンスメソッド
public function test_1():void
{
trace("1")
}
// クラスメソッド
static public function test_2():void
{
trace("2")
}
}
}
これでAやBをnewできる。
そのためにimportでは絶対パスみたいに.flaファイルからの視点で参照を書く。
又、A.asでは内部のインスタンスメソッドからクラスメソッドにアクセス出来る。
けども、もちろん外部でnewされたインスタンスメからはクラスメソッドにアクセス出来ない。
ちなみに、Importのクラスメソッドに(import で参照していないのに)Aからアクセス出来る。
さらに、ImportのクラスメソッドにはAのクラスメソッドとインスタンスメソッドのどっちからもアクセス出来る。
けど、ImportのインスタンスメソッドはAのインスタンスメソッドからしかアクセス出来ない。
package com.test.A
{
import com.test.Main.Import;
public class A
{
public var parent_:Import
public function A($main:Import)
{
parent_ = $main
}
// インスタンスメソッド
public function hoge()
{
trace("A")
superHoge()
parent_.test_1()
}
// クラスメソッド
static public function superHoge():void
{
trace("superHoge")
Import.test_2()
}
}
}
又、BではHogeBaseを継承して
package com.test.HogeBase
{
public class HogeBase
{
public function HogeBase()
{
trace("hogeBase")
}
public function oyaHoge():void
{
trace("oyaHoge")
}
}
}
package com.test.B
{
import com.test.HogeBase.HogeBase;
public class B extends HogeBase
{
public function B()
{
}
public function hoge():void
{
trace("B")
}
}
}
trace結果が
import
A
superHoge
hogeBase
oyaHoge
B
となり、Bでsuper()をしていなくても親クラスのコンストラクタを実行していた。
まとめ
・インスタンスを作るにはimportでasを参照しないといけない。
・静的系はimportしなくてもどこからでも利用できちゃう。
2008-05-12
ユーザーコントロールのイベント取得([UserControl]に設定)
Loaded
SizeChanged
LayoutUpdated
MouseEnter
MouseMove
・
・
MouseMove
GotFocus
MouseLeftButtonDown
LayoutUpdated
MouseLeftButtonUp
MouseMove
MouseMove
・
・
MouseMove
MouseMove
MouseLeave
2008-05-08
TextBoxのイベント実行順
Loaded
SizeChanged
LayoutUpdated
MouseEnter
MouseMove
MouseMove
・
・
MouseMove
MouseLeave
MouseEnter
MouseMove
MouseMove
・
・
GotFocus
MouseLeftButtonDown
LayoutUpdated
SelectionChanged
MouseLeftButtonUp
KeyDown
TextChanged
SelectionChanged
LayoutUpdated
KeyUp
MouseMove
MouseMove
・
・
2008-03-28
ExternalInterfaceとswfobject
swfobjectを使ったASとJSの連携には
so.addParam("allowScriptAccess", "always");
が必要だった。
2008-03-07
無理な戻り値のデフォルトがNaN
int = 無理な戻り値
trace(int) // #=> 0
uint = 無理な戻り値
trace(uint) // #=> 0
number = 無理な戻り値
trace(number) // #=> NaN
2008-02-24
as3でリンゲージ
まず普通にシンボル化して、リンゲージプロパティのクラス名に"パッケージ名とhoge"を入れてパッケージ名と同じディレクトリに"hoge.as"を作成する。(.flaと.asが同じディレクトリならパッケージ名はいらない)
mainSource
var test:test_linkage = new test_linkage addChild(test)
hoge.as
package パッケージ名 {
import flash.display.*
import flash.events.*
import flash.net.*
import flash.utils.*
import flash.xml.*
public class test_linkage extends MovieClip {
public function test_linkage () {
trace("test_linkage!"+this)
x = 10
y = 10
}
}
}
ここでの座標の設定はmainSourceでも出来た。
var test:test_linkage = new test_linkage test.x = 10 test.y = 10 addChild(test)
リンゲージしたシンボルに子(例えばテキストフィールド:title_txt)がいたら
title_txt.textColor = 0x438434 title_txt.text = "Hallo test_linkage"
でアクセス出来た。
良かった。
ただ
import flash.text.*
が必要
import flash.*
じゃだめ。
2008-02-23
XMLのNamespace
Yahoo!デベロッパーネットワーク - Yahoo!ニュース - トピックスAPI
http://developer.yahoo.co.jp/news/topics/V1/topics.html
を利用しようとすると、XMLの子ノードだけを取得することが出来ない。
恐らくnamespaceが問題なのだろうけどうまくいかない
<ResultSet xsi:schemaLocation="urn:yahoo:jp:news http://api.news.yahoo.co.jp/NewsWebService/V1/Topics.xsd" totalResultsReturned="10" xmlns="urn:yahoo:jp:news" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Result/> <Result/> <Result/>
これのxsi:schemaLocationを
_yahooXML.namespaceDeclarations().toString() // #=> urn:yahoo:jp:news,http://www.w3.org/2001/XMLSchema-instance
を用いてnsに入れてもXMLを認識しない。
default xml namespace = new Namespace(ns)
そうではなくて、nsに入れるべきなのは”urn:yahoo:jp:news”だけだった。
2008-02-17
Google グループ
Google グループ
のメーリングリスト用の設定
- 「メンバー」の「メンバーを招待」の「メンバーを直接追加 メンバーを直接追加」で送信したいアドレスを入力して「メンバーを追加」をクリック。
- 「管理業務」の「 メンバーを管理」で「配信」項目がメールなしになっているメンバーをチェックして「配信タイプを設定」を「メールアドレス」にする。
- このときの配信タイプの意味は「メンバーステータスを編集」から確認できる。ちなみに「メールアドレス」はディスカッションが投稿されるたびに受信する設定になる。
これでディスカッションに投稿するたびに登録メンバーに送信されるようになる。
けれどもGoogle groupsは個人のメルアドが露出したりとどうもプロジェクトでのミーティングツールを想定しているような気がする。
告知を目的とした場合はYahoo!グループのほうが使いやすい。



新建築
LANDSCAPE DESIGN
+DESIGNING
AXIS
Wallpaper*
広告批評
TITLE
Pen
Newsweek Japan
週刊東洋経済
週刊アスキー
Web Designing
Web Creators
Mac Fan
WEB+DB PRESS