タグ: as3

ActionScript3.0覚書 SimpleButton

ActionScriptでボタンを作るやり方は色々あるようで、MovieClipを利用しButtonMode=trueにするやり方や、fl.controlsを使ってしまうやり方。
そして、SimpleButtonを使うやり方。

var sb:SimpleButton = new SimpleButton();
var b1:Sprite = new Sprite();
b1.graphics.beginFill(0x009966,1);
b1.graphics.drawRect(0,0,100,25);
b1.graphics.endFill();
//--  中略 --
sb.upState = b1;
sb.downState = b2;
sb.overState = b2;
sb.hitTestState = b2;

リファレンスに、
SimpleButton(upState:DisplayObject = null, overState:DisplayObject = null, downState:DisplayObject = null, hitTestState:DisplayObject = null)
って、書かれていたものだから、upState以外は指定しなくっても大丈夫なのかと思ってたらそうではなかった。
表示はされるんだが、ボタンとして機能してない。

どういうことなんだ!kao21.gif

って、昨日から悩んでたけど、今日分かったことは、「後からでもなんでも、とりあえず指定してやらにゃぁならん」ということだった。

ということで、up,down,over,hitTest すべてのStateプロパティにSpriteをあてがってやると、ちゃんとボタンとして機能してくれた。

かる~いワナだよ、これは。

ActionScript3.0覚書 AirのWindowが閉じるときに処理を入れたい

Flash ProfessionalでAirを開発中。
Airのウィンドウの右上の×ボタンをクリックされたときに確認ダイアログとかを出す処理を入れたいのだが、

先日載せた、

NativeApplication.nativeApplication.addEventListener(Event.EXITING, ファンクション名);

だと、どちらかというと終わったときの処理になってしまう。
FlexでAirを開発している場合の書き方は、いろんなページで書いてあるのだけど、Flashで開発してるものだから、イマイチ参考にならん。
(私、応用力とかないし・・・)

で、上司にまで「探してるけど出来ないんですぅ~」と泣き言言うと、上司も探してくれた。
「できない、デキナイ・・・」と思いながら、何気なく下のコードを書いたら、想定どおりに動いちゃった。

stage.nativeWindow.addEventListener(Event.CLOSING, ファンクション名);

で、指定したファンクションのなかにダイアログ表示処理を書けばよいことが判明。107256.gif

自己解決・・・しちゃったヨ。

でも、上司さんありがとう。時間とらせてごめんなさい。kao29.gif

ActionScript3.0覚書 文字列とバイト数

通常のTextFieldだと、複数行指定してやれば勝手に改行してくれる。
だが、ラジオボタンコントロールのラベルは改行してくれない・・・

で、ラジオボタンのTextFieldのwordWrapプロパティとかをいじればよいということ。

FLASH-JP.COM RadioButton コンポーネントの文字を自動改行させたい

だけど、そもそも指定バイト数で折り返したいときってどうすんの?と思って検索したところ、ありがたい記事発見。

yoshiweb.NET-blog ActionScriptで文字判定

この記事を元にチャレンジ。

checkCodeは参照先そのまま。
checkHalfは、バイト数を返すように変更。
getStrBytesTotalは、checkHalfの変更に伴い変更。
setReturnCodeは、オリジナル。

// 指定バイト数(default=60)で折り返し
function setReturnCode(str:String, max:int=60):String {
	var cnt:int = 0;
	var len:int = str.length;
	var s:int = 0
	var e:int = 0
	var buf:String = '';
	for (e = 0 ; e < len ; e++ ) {
		cnt += checkHalf(str.substr(e, 1));
		if (cnt >= max) {
			if (buf.length > 0) {
				buf += '\r';
			}
			buf += str.substr(s, e-s+1);
			s = e+1;
			cnt = 0;
		}
	}
	if (buf.length > 0) {
		buf += '\r';
	}
	buf += str.substr(s, e-s+1);
	return buf;
}

// 文字列のバイト数を求める
function getStrBytesTotal(str:String):int {
	var cnt:int = 0;
	var len:int = str.length;
	while (len--) {
		cnt += checkHalf(str.substr(len, 1));
	}
	return cnt;
}

// 指定文字のバイト数を求める→全角なら2、半角なら1を返す
function checkHalf(str:String):int{
	return (checkCode(str, 0x00, 0x7f) || checkCode(str, 0xFF61,0xFF9F)) ? 1 : 2; 
}

// 全半角判定→全角ならfalse、半角ならtrueを返す
function checkCode(str:String, min:uint, max:uint) {
	var len:uint = str.length;
	while (len--) {
		var num:uint = str.substr(len, 1).charCodeAt(0);
		if (num < min || num > max) {
			return false;
			break;
		}
	}
	return true;
}

とりあえず、いい塩梅にはなりました。
あんばいって塩梅って書くんだねぇ・・・よい塩加減なのね)

ActionScript覚書 TextFieldのTextFormatについて

TextFormatに「bold = true」を設定したにもかかわらず反映されない・・・kao12.gif
と思ったら、下記のリンクが非常に参考になった。

flabaka setTextFormatのメモ

要は、

  1. TextFieldに値が入っている場合のみ、setTextFormatを使用できる。
  2. 値が入っていないときは、defaultTextFormatを使用しないと反映されない。
  3. 値が入っているときには、defaultTextFormatが適用されない。

ということである。
ありがとうござるよ!kao22.gif
無事うまく表示できたでござる!!

ActionScript3.0覚書 重なり(深度)

忘れそうなので、いや、忘れてたので。

MovieClipやボタンなどを最前面に表示したいとき
this.setChildIndex(ターゲットインスタンス名, this.numChildren – 1);

逆に、最背面に表示したいとき
this.setChildIndex(ターゲットインスタンス名, 0);

絶対最前面にしたいからって、「9999」とか指定するのはムリそう・・・

ActionScript覚書 ラジオボタンやチェックボックスコンポーネントのTextFormat

日に焼けて顔が腫れて、仕事が手に付かない・・・
(って言い訳にならないよなぁ)

ラジオボタンやチェックボックスのコンポーネントを使っていて、これらのラベルのフォントを設定する場合に利用するのが、setStyleメソッド。

で、チェックボックスにチェックが入ったらラジオボタンを活性に、チェックを外したら非活性にというロジックを組んだところ、落とし穴が・・・

非活性のときのフォントが標準のままの状態になってしまっているではないか!!

というので調べたら、disabledTextFormatというのを発見。

var tf:TextFormat = new TextFormat(); 
tf.font = "MS Pゴシック"; 
tf.size = 22; 

//上が活性時、下が非活性時
A_RadioButton.setStyle('textFormat',tf);
A_RadioButton.setStyle('disabledTextFormat',tf);

なるほどねぇ・・・

WordPressに天気予報表示を付けてみる

以下のサイトを参照に、かなり適当に作ってみた。

成果はカレンダーの下。
ウィジェットにせず、sidebar.phpincludeしているだけの適当作業。

お粗末だけど、もともと、ActionScriptで同様のブログパーツを作ろうと思ってたのに、結局セキュリティ関連でどうやっていいのかわからないから諦めたというのが、最もお粗末なところ。

このサンプル、コンパイルしなおさなきゃいけないので、動作確認がメンドクサイ。
(proxy.phpの位置なんて、パラメータで渡したらいいじゃん・・・と思うのは間違い?)