Category Archive: ActionScript

[Blender]テクスチャのベイクで、あとからオブジェクトを結合したときに追加したとこだけベイクされないときの解決法

Blender2.78a使用

テクスチャのベイクで、別のオブジェクトも結合(ctrl + j)した後、UV展開やり直してベイクしたときに、結合で追加したポリゴン部分だけベイクされないという現象に遭遇。
小一時間悩んで、とりあえず解決出来た気がするメモ。

結論は、UVMapを作り直す。
UVの展開をすると、オブジェクト>プロパティ>データのUVマップ欄のところにUVMapというのが生成されてのだけど、

オブジェクトの結合を行ったときは、生成済みのUVMapを[-]ボタンで削除してまっさらにしてから、改めてUV展開を行いUVMapを生成する。
そうするとベイクしたときに追加分のポリゴンも正しくベイクされるようだ。

参考:
How to combine two different textures into one

[AS]Embedした複数の画像(クラス)を連番(文字列)で参照したい場合の方法(ASC2.0の場合)

この記事と、同名タイトルの記事があるのですが、
[AS]Embedした複数の画像(クラス)を連番(文字列)で参照したい場合の方法

先日、ASC2.0でのコンパイルでは、上記記事のgetDefinitionByName()の例がランタイムエラー(クラスが見つからない)になってしまうとのお話を聞きました。

そこで偉い人(akb7さん)からASC2.0でのやり方を聞きましたのでメモしておきます。

具体的にはクラス名の命名ルールがASC2.0で変更になったようで、以前のような参照の仕方ができなくなった模様。

package
{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	
	/**
	 * ...
	 * @author 393
	 */
	public class Main3 extends Sprite
	{
		[Embed(source="assets/foo0.png")] private var AImage0:Class;
		[Embed(source="assets/foo1.png")] private var AImage1:Class;
		[Embed(source="assets/foo2.png")] private var AImage2:Class;
		
		public function Main3()
		{
			super();
			//FP11.3以上のメソッドを利用:applicationDomain.getQualifiedDefinitionNames();
			embedFunc();
		}
		
		public function embedFunc():void
		{
			var classNames:Vector.<String> = loaderInfo.applicationDomain.getQualifiedDefinitionNames();
			var count:int = 0;
			
			for each (var className:String in classNames)
			{
				trace(className);
				//↓trace結果はこんな感じの名前になってる
				//foo0_png$e7be431d52b236ccd82cd15de1a20fab1328790674
				if (className.indexOf("foo") == 0)
				{
					var clazz:Class = loaderInfo.applicationDomain.getDefinition(className) as Class;
					addChild(new clazz()).x = 100 * count;
					count++
				}
			}
		}		
			
	}

}

[AS]FlashBuilder4.7の(バグだらけの)ASC2.0の無効化する(以前のコンパイラに戻す)方法

FlashBuilder 4.7はASC2.0というコンパイラでswfをコンパイルします。
(このコンパイラ変わってることを意識してない人が意外と多いみたい)
ASC2.0で書きだしたswfの方が軽くて速くなる、というウリなのですが、いかんせんまだ完成度が低いのか使い方によって謎なバグに遭遇することが多いです。

ボクの経験だとFlashProで作ったswcのDisplayObject系のアセットを使おうとするとなぜだか完全透明になってしまった画面に表示されない、という現象に遭遇しました。
(swc使うとバグる法則性ははっきりつかめていない)


で、FlashBuilder4.7はデフォルトがASC2.0コンパイルなのでこれらのバグから逃れるためにはFlashBuilder4.6にバージョン落とすしかないのかな、と思ったのですが、どうやら設定でコンパイラを変えれるということを教えてもらいました。

プロジェクト単位で設定可能です。
が、ここに大きな罠があります。
それはプロパティパネル上では変更できないということ。
では、どうするかといえば、プロジェクトフォルダのルートに存在する設定ファイル(例:hoge.actionscriptproperties)をテストエディタで開いて、該当箇所を直接書き換えて保存しなおす、ということをすればOKです。


該当箇所は3行目のuseFlashSDK=”true”をuseFlashSDK=”false”に変えるだけ。

//プロジェクト設定ファイル (hoge.actionscriptproperties)の3行目
//長いので改行してます。
//該当箇所はここでは13行目
<compiler additionalCompilerArguments="-locale en_US"
 advancedTelemetry="false" autoRSLOrdering="true" 
copyDependentFiles="true" fteInMXComponents="false"
 generateAccessible="false" htmlExpressInstall="true"
 htmlGenerate="false" htmlHistoryManagement="true"
 htmlPlayerVersionCheck="true" includeNetmonSwc="false"
 outputFolderPath="bin-debug" removeUnusedRSL="true"
 sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0"
 useApolloConfig="false" useDebugRSLSwfs="true" 
useFlashSDK="false"
 verifyDigests="true" warn="true">

これでASC2.0に悩まされることもなくなります。


ちなみにコンパイルが本当にASC2.0じゃなくなったかの確認は、以下のような関数を実行してみて、コンパイルエラーになったら、ASC2.0コンパイル。エラーでずにtraceできたら従来のコンパイラとなっております。

public function duplicate2 (foo:String):void 
{
    const foo:String = "hugahuga";
    trace(foo); //旧:hugahuga, 新:実行できない
}

ASC2.0についてはここにまとめられてます。
とんぶろ:ActionScriptCompiler2.0について発表してきたよ
※上記確認コードもここのスライドから借りました。


おまけ
useFlashSDK=”false”を設定すると、FlashBuilder4.7のプロジェクト→プロパティ→ActionScriptコンパイラーの項目に「従来のコンパイラーを利用する」というチェックボックスが表示されるようになります。

3336272fa1c68bbf80d5dfffb1d9db79

これで、いちいちテキストエディタで編集しなくてもいいか、と思いきや、この機能はバグってるようでチェックボックスを解除してOKとしても次に開いたときはまたチェックされた状態になってしまいここで設定を変更することはできないようでした。

[IDEA]intelliJ IDEA 12.0.4でAction Script Compiler2.0(ASC2.0)を使う方法。

IDEA12はAction Script Compiler2.0(ASC2.0)対応してるぜ、と書いてあったので試してみました。
で、ちょっとだけ迷ったのでメモ。
(intelliJ IDEA 12.0.4と書いたけどたぶん12.0.2とかでもできるはず)

※ここのスレッドが参考になりました。
IntelliJ12 – Which version of ActionScript Compiler 2.0 is used?を見ながら


ASC2.0はFlashBuilder4.7に搭載されてる新しいコンパイラ。
(ちなみにFlexSDKとCompilerの違いはイマイチよくわかってない。。)
具体的にどういうものかはこちらにわかりやすく書いてありました。

とんぶろ:ActionScriptCompiler2.0について発表してきたよ


ASC2.0のダウンロードはここからできます。
(ずっとlabs扱いだったけど最近正式版がリリースされたっぽい)

http://www.adobe.com/devnet/air/air-sdk-download.edu.html

というかAIR SDK(3.6)に含まれてるのね。
(やっぱりよくわかってない)


IDEAで使うには、まずこれをFlexSDKにマージしてあげないといけないみたい。
(ダウンロードしたAIR SDKをFlexSDKに上書きコピー)
これまでのAIR SDKと同じ使い方ですね。
FlexSDKとは違うコンパイラだからFlexSDKいらないんじゃないのと思ってましたが、AIR SDKだけだとIDEA上でSDKに登録することができませんでした。
(FlexSDKじゃないよ!と怒られる)

e757f55b4dda12f264b57f2a103489dd

マージしてあげたものは問題なく登録できました。
f55b868e89aa0c5cefcc0717c1f110fa


SDKの設定ができたら、File->SettingでSettingウィンドウを開いて、
左のリストから、Compiler->Flex Compilerを選んで、
Compiler withをMxmlc/compcにチェック
でPrefer ActionScript Compiler 2.0 for pure Action~にチェック
こんな感じ。

25bb5deb852d41001ca52183e7a2948e

これで準備OKです。
ためしに、Additional compiler optionsに-advanced-telemetry=trueを追加してビルドしてみたものはScout上でasの中まで見ることができるようになりました。

d6693af3e6b0fdebbb0d1a72648ca05b

FlashBuilder4.7だとFlashProで作ったSimpleButtonの挙動がかなり怪しげなことになってたけどこれはどうなんだろうか。

2013/2/20追記
ASC2.0でのSimpleButtonの挙動は問題なかったでした。
一安心。

[Event]F-siteでお話してきました。

先日F-siteで「AIR for iOSでiPhoneアプリ作ったお話」をしてきました。
発表資料をSlideShareにあげましたので興味ある方はのぞいてみてください。
(あいまいな部分も多いので間違いもあるやもしれませんが)

.
.
.
あわせてよみたい
時間の都合でStage3D周りのお話はばっさりカットしましたので、Stage3Dに関する内容はこちらで。

[AS]FlashBuilder4.7(Beta)で「VerifyError: Error #1107: ABC データは破損しているため、境界外の読み取りが試行されました。」と出たときの対処法


****2012.10.11追記*****
FlashBuilder4.7Beta2では下記のエラーはでなくなった模様
ただ自分のボタンシンボルを含んだサンプルをパブリッシュしたら、レイアウトが盛大に崩壊したりしていて、なんか挙動がとても怪しい気がする・・・
(具体的にどういうときに崩れるかはちゃんと検証してない)
****************************

FlashBuilder4.7では新しいASコンパイラが搭載されているので、過去に作ったプロジェクトを書き出そうとエラーがでることがあります。

今日遭遇したのはこれ

その1:VerifyError: Error #1107: ABC データは破損しているため、境界外の読み取りが試行されました。

その2:Error #2022: Class [※hogehoge] must inherit from DisplayObject to link to a symbol.

[※hogehoge]の内容はいろいろ変わる

これは、FlashIDE上で作ったアセット的なSWCファイルからリンケージしたボタンシンボル(SimpleButton)を読み込もうとすると発生するエラーみたい。
リンケージしたムービークリップシンボルの中にボタンシンボルが含まれててもダメ。

リンケージしたボタンシンボルを呼ぼうとすると、上記:その1のエラーがでて
ボタンシンボルを含むリンケージしたムービークリップシンボルを呼ぼうとすると、その2のエラーがでました。

で、今再現確認してみたところ、リンケージしたムービークリップシンボルの中にボタンシンボルが含まれてる場合はエラーでなくなった・・・なんでだろう。
でも、そのムービークリップを表示してみると、含まれてるはずのボタンシンボルがひとつも表示されないのでやっぱり何かおかしいみたい。

とりあえずFlashBuilder4.7で使うアセットSWCにはボタンシンボルは使わないほうがいいみたい。

[iPhone][Alternativa3D][AIR]AIR for iOSでシンプルな3Dゲームをリリースしました。

メモ記事を書いてましたが先週やっとiPhoneアプリとしてリリースしました。

Live with the Wind.
support site
itunesStore

初めてFlash:Air for iOS(AIR3.3SDK)で作ってみたよ。
3DエンジンにはAlternativa3D(8.17.0)を使用したよ。

もろもろ苦戦したことは以前公開したStage3D勉強会#2の資料に書いたので興味ある方は読んでみてください。


■実装以外でのゲーム性について
▼気持ちよさの工夫
BGMのBPMに連動するような動きを意識
→風を連続で取ったときの効果音がBPMと連動するようにスピードを調整
→風車の首を降り始めは曲調が変わるタイミング
→あと風車が首を振るときのスピードもBPMと連動するような

▼飽きさせない工夫
上昇気流だけを取り続けて飛ばれるとゲームオーバーになりにくいが緊張感なくなりゲームが単調になる
追い風も取らせて緊張感のあるゲーム展開にしたい
→上昇気流だけを取りつづけた場合は無理ゲーになるような設定に。
 (風車の背がどんどん伸びていく)
→2種類のコンボ要素の追加
 (コンボを続けると風車の背が伸びにくくなるようにしている)
※「上昇気流を取る→風車がのびる」という部分がルール的には判りにくくなってしまったのでヒントの項目に記載したけど理解できてない人も多いかも。。

▼操作性について
iPhoneアプリというと傾きセンサーだけど今回は無しで。
プレイヤーが学習してやりこみ性あるゲームにしたかった。
傾きセンサーでは細かいコントロールができないので運要素が増えてしまう
個人的に思うようにコントロールできないのは嫌い、というのが一番の理由
あと電車でプレイしてる姿も少し恥かしくなるしね。


8月中は無料で9月から170円になりますので是非試してみてくださいまし。

※Flash製なので簡単にWEBおためしプレイ版も用意できますよ。
>FlashPlayer11.0
(音鳴ります)

[AS][Alternativa3D]Blender(2.6.3)で書き出したcollada(.dae)ファイルをAlternativa3Dで読み込むときの注意

教えて頂いたのでメモメモ

collada(.dae)ファイルって方言が多いようです。
Blender(2.6.3)で書き出したものをそのままAlternativa3Dの公式サンプル(parsersexample/ParsersExample.as)で読ませようとするとうまくできませんでした。
(公式サンプルに含まれているcolladaファイルは問題なく表示されるので、Blenderでのcollada書き出しがalternativa3D的にはイマイチみたい)


該当箇所はここの8行目

//parsersexample/ParsersExample.as内のonColladaLoadメソッド抜粋
private function onColladaLoad(e:Event):void {
	// Model parsing
	// Парсинг модели
	var parser:ParserCollada = new ParserCollada();
	parser.parse(XML((e.target as URLLoader).data), "parsersexample/", true);
	trace(parser.objects);
	var mesh:Mesh = parser.getObjectByName("Cylinder01") as Mesh;
	mesh.x = 0;
	scene.addChild(mesh);

	// Загрузка ресурсов
	uploadResources(mesh.getResources(false, Geometry));
	
	// Собираем текстуры и назначаем материалы
	var textures:Vector.<ExternalTextureResource> = new Vector.<ExternalTextureResource>();
	for (var i:int = 0; i < mesh.numSurfaces; i++) {
		var surface:Surface = mesh.getSurface(i);
		var material:ParserMaterial = surface.material as ParserMaterial;
		if (material != null) {
			var diffuse:ExternalTextureResource = material.textures["diffuse"];
			if (diffuse != null) {
				textures.push(diffuse);
				surface.material = new TextureMaterial(diffuse);
			}
		}
	}

	// Loading of textures
	// Загрузка текстур
	var texturesLoader:TexturesLoader = new TexturesLoader(stage3D.context3D);
	texturesLoader.loadResources(textures);
}

parser.getObjectByName(“Cylinder01″)でオブジェクトの名前を拾おうとしてますが、Blenderで書き出したcolladaファイルはこの名前が含まれていないのでエラーになります。
とりあえずはcolladaファイルの中身を以下のように修正すればOK。

<library_visual_scenes>タグの中<node id=”hoge” type=”NODE”>にid属性と同じ値を持ったname属性を追加。
<node id=”hoge” name=”hoge” type=”NODE”> こんな感じ
Blender側で用意したオブジェクトの数だけ修正してあげましょう。

[AS][iPhone]AIR SDK 3.3でANEを含めたビルドがWindowsでもできた

ひとつ前の記事のさらなる補足です。

前の記事で、
Windowsではaneファイルの仕様によってはipaパッケージングができない
(windowsではiosのplatformsdkの指定ができない仕様なので)
と書きましたが、
AIR SDK 3.3ではこれが解消されたと教えてもらいましたので試してみました。

http://twitter.com/Hiiragi3/status/212455016550776834

これまで同様ANE-SilentSwitchのテストプロジェクトをANTでビルドしてみたらipaを生成することができました。


※AIRSDK3.3を指定してもFlashBuilder4.6ではやはりplatformsdkの設定はできませんでした


あとビルド時には大量のWarningも発生。。
実機転送して問題なく動いてたようなので無視していいのかしら。。

[exec] ld: warning: -ios_version_min not specificed, assuming 4.0
[exec] ld: warning: ARM function not 4-byte aligned: _IDctSlow_ARM from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowProcessRowLoop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowSkipArithmeticInRow from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowProcessColumnLoop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC1S7 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantTable from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC7S1 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC3S5 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC5S3 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC4S4 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC2S6 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDctSlowConstantxC6S2 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: _IDct10_ARM from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10ComputeRow0 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10ComputeRow1 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10ComputeRow2 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10ComputeRow3 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10_skip_Row3 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10ProcessColumns from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10ProcessColumnLoop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10Fill2WithZero from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10Fill1WithZero from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDct10Fill0WithZero from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: _IDct1_ARM from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: _IDCT1_plus_ReconBlock_ARM from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDCT1_plus_ReconBlock_loop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: _IDCT1_plus_ReconInter_ARM from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: IDCT1_plus_ReconInter_loop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(idct_part.o)
[exec] ld: warning: ARM function not 4-byte aligned: _FilterBlock1dH_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: loop1 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: _FilterBlock1dV_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: loop3 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: loop4 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: _FilterBlock2dFirstPass_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: loop5 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: _FilterBlock1dBilH_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: FilterBlock1dBilH_next_row from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: _FilterBlock1dBilV_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: FilterBlock1dBilV_outer_loop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: FilterBlock1dBilV_inner_loop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: _FilterBlock2dBil_FirstPass_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: FilterBlock2dBil_FirstPass_next_row from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(predfilters.o)
[exec] ld: warning: ARM function not 4-byte aligned: _Copy12x12_ARM9E from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(copy12x12.o)
[exec] ld: warning: ARM function not 4-byte aligned: Copy12x12_CSrcAlign0 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(copy12x12.o)
[exec] ld: warning: ARM function not 4-byte aligned: Copy12x12_CSrcAlign1 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(copy12x12.o)
[exec] ld: warning: ARM function not 4-byte aligned: Copy12x12_CSrcAlign2 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(copy12x12.o)
[exec] ld: warning: ARM function not 4-byte aligned: Copy12x12_CSrcAlign3 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(copy12x12.o)
[exec] ld: warning: ARM function not 4-byte aligned: _ReconIntra_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(reconstruct-F6251070C86EBC8D.o)
[exec] ld: warning: ARM function not 4-byte aligned: loop from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(reconstruct-F6251070C86EBC8D.o)
[exec] ld: warning: ARM function not 4-byte aligned: _ReconInter_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(reconstruct-F6251070C86EBC8D.o)
[exec] ld: warning: ARM function not 4-byte aligned: loop1 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(reconstruct-F6251070C86EBC8D.o)
[exec] ld: warning: ARM function not 4-byte aligned: _ReconBlock_ARM11 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(reconstruct-F6251070C86EBC8D.o)
[exec] ld: warning: ARM function not 4-byte aligned: ReconBlock_ARM11_LOOP from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(reconstruct-F6251070C86EBC8D.o)
[exec] ld: warning: ARM function not 4-byte aligned: _tDecodeBool from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(tDecodeBool.o)
[exec] ld: warning: ARM function not 4-byte aligned: _tDecodeBool128 from E:\\00_flash\\flex_sdk_4.6_air3.3\\lib\\aot/lib/libRuntimeInterpreter.arm-air.a(tDecodeBool.o)

[AS][iPhone]AIR for iOSにおいてANEを含めたビルドにはやはりMAC一択

昨日の記事の補足です。

StickSports / ANE-Silent-Switch
 ↑こちらのtestプロジェクトをビルドをなんとかwindowsでできないかと再挑戦しましたがやっぱり無理だったというお話。
(AIR SDK 3.2でのお話です)


昨日はスルーしていた開発者が指示しているビルド方法を試しました。

Antビルドスクリプトのテスト/ build.xmlをビルドし実行します。これは、テストの/ binフォルダ内のテストのIPAを作成します。

Antなにそれ?状態でしたが、FlashBuilderからAntの実行ができます。

手順としては、
1.何でもいいからプロジェクトを一個作る。
(AS3プロジェクトを作りました)


2.プロジェクトにANE-Silent-SwitchからDLしたデータを突っ込む
(具体的には[test][bin]の3つのフォルダ)


3.test/build.xmlの修正
これはUNIX向けのANTらしいのでそのまま実行するとWindowsでエラーります。
test/buildフォルダ内build.xmlを2箇所修正します。

<!--12行目内の"amxmlc"の後ろに".bat"を追加-->
<exec executable="${sdk.home}/bin/amxmlc.bat" failonerror="true" dir="../bin">
<!--35行目内の"adt"の後ろに".bat"を追加-->
<exec executable="${sdk.home}/bin/adt.bat" failonerror="true" dir="../bin">

4.設定ファイルへの記述
test/buildフォルダ内にexample.build.configがあります。
ここにflexsdkのパスやらipaにパッケージする際の証明書ファイル(.p12)やモバイルプロビジョニングファイルのパスやら、iossdkのパスを設定します。
さらにファイル名をexample.build.config→build.configと変更します。
(ボクの設定例)

# The location of the flex sdk with Air 3.1 or later
sdk.home = E:/00_flash/flex_sdk_4.6_air3.2

# The location of the .p12 developer certificate file
ios.keystore.file = E:/cert/hoge.p12

# The password of the .p12 developer certificate file
ios.keystore.password = passpass

# Provisioning profile
ios.provisioning.profile = E:/cert/forTest.mobileprovision

# The iOS SDK location
ios.sdk = E:/iPhoneOS51/

※iossdkは別途macに入ってるXcode4.3の中から持ってきました。


5.buld.xmlの実行
test/build.xmlにカーソルを合わせて右クリック→実行でantの実行ができます。

がしかし、全ての設定を正しくしていてもエラーになるのです。
FlashBuilderのコンソールにたくさん表示される中の一文で

-platformsdk option for IPA targets is supported only on Mac

とでてまして、つまりはmacでしかiosのsdk指定はできないよ、と。

もちろん全てのaneが使えないということじゃないけども、昨日書いたように

ld warning: unexpected srelocation type 9

このエラーがでちゃったらもうane自体をXcode4.1でビルドしなおすか、aneはそのままでやるなら、ipaのビルドはmacを使う(iossdkを指定して)しかないっぽい。
windows一本でやりたいのになぁ、残念。