Hatena::ブログ(Diary)

aNTIwEBdESIGN

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-11

@endで警告が表示されるのはスペルミス

なんとなく表示される3つの警告文の2つ目(中央)に原因が書かれているような印象を受ける。

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-24

Lepard to sonw Lepard

使用:18.96GB(20,354,850,816Byte)

空き:129.77GB

再インストール

使用:10.63GB

空き:137.98GB

2009-07-01

挿入とリンク

で貼り付けた画像がオリジナルの方で変更された時にいつになったら反映されるんだ!って思ったらパワポを再起動させる、とさ。

そんなん!右クリックに用意しとけよってか書いとけよ!

しかもリンクされているかどうか確認のしようがないなんて><

2009-06-15

の流れ

会社では

クラス図→ユースケース図→アクティビティ図

だったけれど

基礎UML本は

アクティビティ図→ユースケース図→クラス図

あれ?

2009-03-22

Blend 3 Previewのマウスホイール設定

アートワークでマウスをホイールするとズーム倍率が変わってしまう。

[ホイール=アートワークを上下に移動]にしたかったのだけれどデフォルトがズームになってしまった><

イラレとか行き来するんだから倍率はCtrlキー併用時にさせたい。

f:id:antivivi:20090322165613p:image

[Tools]>[Options]>[Artboard]>[Mouse wheel]

プルダウン(コンボボックス?)から[Ctrl + mouse wheel]を選択する。

2009-03-08

削除してもいいプロジェクトファイル

binとobjとpublic(発行した場合)は削除してもビルドすればまた作ってくれる。

けどPropertiesは削除するとコンパイル時に怒られるようになる。

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!のメーリングリストマネージャー

  1. [ツール]<[メーリングリストマネージャー]
  2. [追加]を押下
  3. メーリングリスト名はただのラベル
  4. [投稿先],[コマンドあて先]にMLのアドレスをこぴぺ
  5. テンプレートを使いたいときにはコマンド用テンプレートの(例えば)参加を押下
  6. ポップアップした画面に%T{%Y/%m/%d(%a)}などを入れていく
  7. [関連フォルダ]で使っていきたいフォルダを指定する
  8. これで指定したフォルダを右クリックのメーリングリストの(例えば)参加を押下すると、先ほどの入力した宛先とテンプレートが入力された状態で新規作成画面が表示する

終わり

2008-06-16

画像の比率を維持したまま、解像度指定しないまま切り抜き。

PhotoShipでは出来なかったからFireworks。

【未解決】

  1. マーキーツールのスタイルを固定比(例えば4と3)
  2. マーキーツールで範囲を指定
  3. 指定したまま切り抜きツールを選択
  4. ENTER
  5. その切り抜きヒストリを保存(コマンド)する
  6. そのコマンドを実行 OR ファイルのバッチ処理の中にさっき保存したバッチがあるからそれを実行

最初に切り抜きしたサイズに揃ってしまう。

スクリプトを書くしかないのか。

2008-06-09

徐々にアルファ

とあるオブジェクトAを作ってコピーしておく。

Aに不透明マスクを作成して、透明パネル内の右の四角をクリックして、Aをペーストする。

右Aのグラデーションを円形(or線形)にする。

あとはグラデーションツールで調整する。(黒が透明?)

このままじゃ透明マスク編集のままなので左の四角をクリックする。


不透明マスクを作らずに乗算だけで出力すると透明なはずだったところが白になってる。

2008-06-05

イラレのフォントエラー

"このフォントでは、一部の字が正しく表示されない可能性があります。"

フォントに問題があるんじゃなくて、書いた文字が怪しい。

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-04-12

お弁当箱の作り方


Aシンボル(空のテキストフィールドなど)

+

リンケージされたasファイル(マウスイベントなど)

をセットにして、別の.flaにコピーする。


そこでは動きを定義したシンボルの中に入れて、

(動き自体はリンケージasファイルで記述)

空のMCやTFを持ったシンボル(インスタンス)が動く。


さらにそのシンボルも別の.flaにコピーして、

拡大縮小の設定をしてあるシンボルに入れる。

そしたら動きながら拡大縮小して動的にテキストをかえられるMC(乃至シンボル)が出来上がる。

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 グループ

http://groups.google.co.jp/

のメーリングリスト用の設定

  1. 「メンバー」の「メンバーを招待」の「メンバーを直接追加 メンバーを直接追加」で送信したいアドレスを入力して「メンバーを追加」をクリック。
  2. 「管理業務」の「 メンバーを管理」で「配信」項目がメールなしになっているメンバーをチェックして「配信タイプを設定」を「メールアドレス」にする。
  3. このときの配信タイプの意味は「メンバーステータスを編集」から確認できる。ちなみに「メールアドレス」はディスカッションが投稿されるたびに受信する設定になる。

これでディスカッションに投稿するたびに登録メンバーに送信されるようになる。

けれどもGoogle groupsは個人のメルアドが露出したりとどうもプロジェクトでのミーティングツールを想定しているような気がする。

告知を目的とした場合はYahoo!グループのほうが使いやすい。

2008-01-18

memo

・参照はasフォルダからの見るのではなく、読み込まれるMXMLからの参照になる。

・A.appendChild(B)のBはBの参照をしているだけで、実際には複製されているわけではない。

複製するにはA.appendChild(new B)をしてやる必要がある。(Flexの仕様)

・Builderのヘルプが検索語の類似度まで表示されるので使いやすい。

・カスタムコンポーネントにもcreatecompleteが使える。