OSXでパケットキャプチャ(パケットニスファ)できそうなソフトを物色。今まではWindowsで横取り丸+InetSpyを使ってたけど、Windowsマシンの調子相変わらず悪いので、この際OSXでやろうかと。で探したのが・・・
Timer()で発生する誤差
Timerクラスを使ってのインターバル処理で音を鳴らしていたら、間隔を縮めていくとタイミングがずれてきた。ググってみると、やっぱり起こるらしい。以下、関連リンク。
Arrayの落とし穴(1) – Array.sort()
グローとグラデーショングロー
ある人に「MovieClipに選択表示の枠線つけるのってどうすればいいか?」と聞かれて、「フィルタでやればいいのでは?」といっていろいろいじってたときに発見。プロパティタブにあるフィルタは「グラデーショングロー(GradientGlowFilter)」だけど、スクリプトにはそれとは別に「グロー(GlowFilter)」があったのね。何でプロパティパネルにないんだろう?
btn_glow.addEventListener(MouseEvent.CLICK, onSetFilterglow);
function onSetFilterglow(event:MouseEvent):void {
//—枠線設定(グロー)
var c:uint=0x00FF00;
var a:Number=1;
var bX:Number=6;
var bY:Number=6;
var st:Number=10;
var filterglow:GlowFilter=new GlowFilter(c,a,bX,bY,st);//枠線適用
mymc.filters = [filterglow];
}
CS4でフレームラベルエラー
ArgumentError: Error #2109: フレームラベル f_intro がシーン s_intro で見つかりません。
at flash.display::MovieClip/gotoAndPlay()
at iwd_fla::MainTimeline/frame5()
フィルタの値を加算する
フィルタをいじっていて、加算するときはどうするのかと疑問が。例えば0〜30までblurをかけるときは、数値(下記の場合はval_x, val_y)を可変にして・・・
var filter:flash.filters.BlurFilter = new flash.filters.BlurFilter();
filter.blurX = val_x;
filter.blurY = val_y;
filter.quality = 1;
mc.filters = [filter];
mc.filters = [filter];
//ぼかし処理(加算)
function xAddFilter_blur(mc:MovieClip,val_x:Number,val_y:Number):void {
var array_filter:Array = mc.filters;
var exist_blur:Boolean = false;
var filter:flash.filters.BlurFilter;for (var i:int = 0; i<array_filter.length; i++) {
var wObj_filter:Object = array_filter[i];
if (wObj_filter is BlurFilter) {
exist_blur = true;
var current_blur:Number = isNaN(wObj_filter.blurX) ? 0:wObj_filter.blurX;
filter = new flash.filters.BlurFilter();
filter.blurX = current_blur + val_x;
filter.blurY = current_blur + val_y;
filter.quality = 1;array_filter.splice(i,1);
array_filter.push(filter);
mc.filters = array_filter;break;
}
}if (! exist_blur) {
filter = new flash.filters.BlurFilter();
filter.blurX = current_blur + val_x;
filter.blurY = current_blur + val_y;
filter.quality = 1;array_filter.push(filter);
mc.filters = array_filter;
}
}
if (wObj_filter is BlurFilter) {
あとは他のフィルタを上書きしないことと、BlurFilterがない(設定されていない)場合を考慮すればOK。
PlaneのMaterialに設定したムービークリップを参照する
ひとつ前のポストに関連してるけど、PlaneのMaterialに設定(適用)したムービークリップ(以下、mc)を参照できるかなと(注:targetPlaneはPlaneオブジェクトです)・・・
trace(“targetPlane”,targetPlane.material);
targetPlane Texture:s02 lineColor:0 lineAlpha:0
trace(“targetPlane”,targetPlane.material.Texture);
1119: 未定義である可能性が高いプロパティ Texture に静的型 org.papervision3d.core.proto:MaterialObject3D の参照を使用してアクセスしています。
var material:MovieAssetMaterial = new MovieAssetMaterial(name_slide,true,true,false,true);
//後からMovieAssetMaterialのmcを制御するためにリスト化
array_materials.push(material);
for (var i:int = 0;i<array_materials.length;i++) {
var mc:MovieClip = array_materials[i].movie as MovieClip;
mc.content.gotoAndStop(1)
}
MovieAssetMaterialで適用したmcから上の階層への参照
またしてもPapervison3Dネタで。
Scene3D > DisplayObject3D > Plane > MovieAssetMaterial
var name_slide:String = “panel”;
var material:MovieAssetMaterial = new MovieAssetMaterial(name_slide,true,true,false,true);
var mc:MovieClicp = material.movie as MovieClip;
material.xSaveObj_root(obj_root);
var obj_root:Object;
function xSaveObj_root(obj:Object):void {
obj_root = obj;
}
iPhone:実機にAppが送れない
昨年iPhoneデベロッパー登録して、ようやくぼちぼちいじってます。で、デバイス(実機)での確認テストをしようとして躓いた点。
Code Sign error: Provisioning profile ‘XXXXXX’ specifies the Application Identifier ‘com.XXXX.*’ which doesn’t match the current setting ‘com.yourcompany.Counter’
ググってみたら、このサイトで・・・
3. プロパティの項目にある識別子にApp IDで設定したApp ID name(10文字)を除いた残り 例えばcom.domainname.*の場合はcom.domainname.${PRODUCT_NAME:identifier}とする。
てな記述を見つけ、「プロパティって、何のプロパティ???」と思いつつ調べてみたら、info.plistの中にある「Bundle identifier」のことでした。ここの指定が「プロジェクト」>「プロジェクト設定を編集」から「ビルド」を選んで、Code Signing>コード署名 ID>Any iPhone OS Device で指定した「Provisioning」で指定したデベロッパー名と合ってないといけないようです。さらに調べると、plistってプロパティリストと呼ばれるファイルだそうで、だから上の引用で「プロパティ」って書いているのね・・・。この辺をみると、OSX独自のファイルのようです。
- iPhone実機転送でハマった際に超参考になったサイト[5039 blog]
- 目指せ!iPhoneアプリ開発エキスパート[gihyo.jp]
- iPhoneアプリを実機で動かす[Kentaro Simizu]
- 実機へのアプリインストール手順[mojalog]