Archive for the ‘iOS’ Category

[AIR][iOS] AIR3.3 Beta を FDT5 で試す (3) -iOSシミュレータ用Antファイル

Category:{ AIR, FDT, iOS }  Tag:{, , , } Comments:{ No Comments }
Posted:{ 2012.05.05 04:25:09 }

前回前々回に引き続き、AIR3.3Betaの新機能iOSシミュレータサポートを試します。

今回は、iOSシミュレータに対して、FDTから「インストール」「実行」「アンインストール」するAntファイルのサンプルです。

下記certificateやappidを設定したあと、
00. [package and launch on simulator] を実行すると、
ipaパッケージからシミュレータで実行までを一発で行います。
再度実行する場合は一度 04. [uninstall] でアンインストールしてください。

<project name="iOS Simulator debug sample" basedir=".">
 
	<fdt.loadProjectProperties />
	<property file="ios.properties" />
 
	<!-- 適宜書き換え-->
	<property name="APP_ID" value="TestiOSSimulator" />
	<property name="iOS_SDK_PATH" value="/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk" />
 
	<target name="00. [package and launch on simulator]">
		<input message="certificate password:" addproperty="certPassword" />
		<antcall target="01. [package]" />
		<fdt.startDebugger switchperspectiveonbreakpoint="true" projectname="TestiOSSimulator" />
		<antcall target="02. [install]" />
		<antcall target="03. [launch]" />
	</target>
 
	<target name="01. [package]">
		<mkdir dir="${publish.dir}" />
		<echo message="Flash Debugger ${FDTHostIP}"></echo>
		<java jar="${FDTProjectSdkPath}/${adt}" fork="true" failonerror="true">
			<arg value="-package" />
			<arg value="-target" />
			<!-- シミュレータ用書き出し 	-->
			<arg value="ipa-debug-interpreter-simulator" />
			<arg value="-connect" />
			<arg value="${FDTHostIP}" />
			<arg value="-provisioning-profile" />
			<arg value="${provisioning.profile}" />
			<arg value="-storetype" />
			<arg value="pkcs12" />
			<arg value="-keystore" />
			<arg value="${certificate}" />
			<arg value="-storepass" />
			<arg value="${certPassword}" />
			<arg value="${publish.dir}/${publish.ipa}" />
			<arg value="${application.descriptor}" />
			<arg value="-C" />
			<arg value="${deploy.dir}/" />
			<arg value="${deploy.swf}" />
			<!-- add more assets here -->
		</java>
	</target>
 
	<target name="02. [install]">
		<java jar="${FDTProjectSdkPath}/${adt}" fork="true" failonerror="true">
			<arg value="-installApp" />
			<arg value="-platform" />
			<arg value="ios" />
			<arg value="-platformsdk" />
			<arg value="${iOS_SDK_PATH}" />
			<arg value="-device" />
			<arg value="ios-simulator" />
			<arg value="-package" />
			<arg value="${publish.dir}/${publish.ipa}" />
		</java>
	</target>
 
	<target name="03. [launch]">
		<java jar="${FDTProjectSdkPath}/${adt}" fork="true" failonerror="true">
			<arg value="-launchApp" />
			<arg value="-platform" />
			<arg value="ios" />
			<arg value="-platformsdk" />
			<arg value="${iOS_SDK_PATH}" />
			<arg value="-device" />
			<arg value="ios-simulator" />
			<arg value="-debuggerPort" />
			<arg value="7935" />
			<arg value="-appid" />
			<arg value="${APP_ID}" />
		</java>
	</target>
 
	<target name="04. [uninstall]">
		<java jar="${FDTProjectSdkPath}/${adt}" fork="true" failonerror="true">
			<arg value="-uninstallApp" />
			<arg value="-platform" />
			<arg value="ios" />
			<arg value="-platformsdk" />
			<arg value="${iOS_SDK_PATH}" />
			<arg value="-device" />
			<arg value="ios-simulator" />
			<arg value="-appid" />
			<arg value="${APP_ID}" />
		</java>
	</target>
</project>

次回は

iOS USBデバッグを試してみたいと思います。

[AIR][iOS] AIR3.3 Beta をFDT5 で試す (2) -iOSシミュレータ上でAIRアプリを動かす

Category:{ actionscript, AIR, FDT, iOS }  Tag:{, , , } Comments:{ No Comments }
Posted:{ 2012.05.05 12:17:59 }

前回に引き続き、AIR3.3 Beta の 新機能 iOSシミュレータサポートを試します。
これはiOSシミュレータ上でAIRアプリを動作させデバッグできる、ということ。(traceも見れちゃう)
今まで実機でしか確認できなかったのを考えると、だいぶ楽になりそう。

FDTモバイルプロジェクトを作成

[1] iOS用プロジェクト作成

[New FDT Project] から[Mobile] >[AS3 iOS] を選択し任意のプロジェクト名をつける

[2] antの編集

手っ取り早くシミュレータ動作を確認するため、FDT Mobile Projectが自動で吐き出すantファイルに手を加えましょう。
ant/ios_debug_build.xml 内の
ipa-debug-interpreter部分を、ipa-debug-interpreter-simulatorと書き換えます。

[3] インストールするための ant target の追加

iOSシミュレータにipaをインストールするためのtargetを、先ほどと同じant/ios_debug_build.xmlに追加します。

<target name="install">
<!--
 [iOS SDKのパス] ex) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk
[ipa のパス] ex) publish/TestiOSSimulator.ipa
-->
		<java jar="${FDTProjectSdkPath}/${adt}" fork="true" failonerror="true">
			<arg value="-installApp" />
			<arg value="-platform" />
			<arg value="ios" />
			<arg value="-platformsdk" />
			<arg value="[iOS SDKのパス]" />
			<arg value="-device" />
			<arg value="ios-simulator" />
			<arg value="-package" />
			<arg value="[ipa のパス]" />
		</java>
	</target>

iOSシミュレータ上で動かす

[4] サンプルコード

ドキュメントクラスに、適当に下記のようなコードを書きます

package com.romatica.test.air33.iossimlator
{
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.desktop.NativeApplication;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
 
	public class TestiOSSimulator extends Sprite
    {
		public function TestiOSSimulator()
		{
            stage.scaleMode=StageScaleMode.NO_SCALE;
            stage.align=StageAlign.TOP_LEFT;
            var _tf:TextField = addChild(new TextField( )) as TextField;
            _tf.defaultTextFormat=new TextFormat(null,30,0xcc0000);
            _tf.autoSize = TextFieldAutoSize.LEFT;
            _tf.text = "AIR ver " +NativeApplication.nativeApplication.runtimeVersion;
            trace(NativeApplication.nativeApplication.runtimeVersion);
		}
	}
}

上記コードを実行したswfは下記。

[5] ipaパッケージしインストールする

前回の記事を参考に、swfをパブリッシュし、antから.ipaをパッケージします。

同じく先ほど[3]で追加したantを実行し、iOSシミュレータにipaをインストール。

うまくいくと、 iOSシミュレータを立ち上げた場合、アプリがインストールされているのがわかります。

そのままtraceもFDTのConsoleで確認できます!。(・∀・)クソベンリ!

最後に

次回は インストール、アンインストール、実行をANT化してみたいと思います。

[AIR] Accelerometer を 回転角度に変換

Category:{ actionscript, AIR, Android, iOS }  Tag:{, , , , } Comments:{ No Comments }
Posted:{ 2012.02.18 12:11:08 }

モバイル AIR(Android / iOS)の Accelerometer の値をイマイチ理解していなかったので、角度に変換するサンプル作ってみました

動作イメージ

いまいちイメージがわかりにくいかと思ったので、動作イメージを Youtube にアップ

サンプルコード

コードは下記です。(thx! @saharan)
※もっと良い書き方あるかな?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/**
 * copyright (c) 2012 www.romatica.com
 * @auther itoz
 */
package 
{
    import flash.events.AccelerometerEvent;
    import flash.sensors.Accelerometer;
    import flash.events.Event;
    import flash.display.Sprite;
 
    /**
     * [Air] Accelerometerから、回転角度に変換.
     *
     * 【サンプル動画 】
     * @see http://www.youtube.com/watch?v=IkPVwSv6rjE
     *     
     */
    public class AccelerometerConvertToRotation_Sample extends Sprite
    {
        private var circle : Sprite;
        private var rollingX : Number = 0;
        private var rollingY : Number = 0;
        private const FACTOR : Number = 0.5;
 
        public function AccelerometerConvertToRotation_Sample()
        {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }
 
        private function onAdded(event : Event) : void
        {
            removeEventListener(Event.ADDED_TO_STAGE, onAdded);
            setCircle();
            setAccelerometer();
        }
 
        /**
         * 円を生成
         */
        private function setCircle() : void
        {
            circle = addChild(new Sprite()) as Sprite;
            circle.graphics.beginFill(0x00cc00);
            circle.graphics.drawCircle(0, 0, 64);
            circle.graphics.beginFill(0x0000cc);
            circle.graphics.drawCircle(50, 0, 10);
            circle.graphics.endFill();
            circle.x = stage.stageWidth / 2;
            circle.y = stage.stageHeight / 2;
        }
 
        /**
         * Accelerometerを生成
         */
        private function setAccelerometer() : Boolean
        {
            var accelerometer : Accelerometer;
            if (Accelerometer.isSupported) {
                accelerometer = new Accelerometer();
                if (!accelerometer.muted) {
                    accelerometer.setRequestedUpdateInterval(1000 / 30);
                    accelerometer.addEventListener(AccelerometerEvent.UPDATE, accelerometerUpdate);
                    return true;
                }
            }
            return false;
        }
 
        /**
         * Accelerometer アップデート
         */
        private function accelerometerUpdate(event : AccelerometerEvent) : void
        {
            // ----------------------------------
            // Accelerometerの傾きを 角度に変換
            // ----------------------------------
            rollingX = (event.accelerationX * FACTOR) + (rollingX * (1 - FACTOR));
            rollingY = (event.accelerationY * FACTOR) + (rollingY * (1 - FACTOR));
            var rad : Number = Math.atan2(rollingY, -rollingX);
            var angle : Number = rad * 180 / Math.PI;
 
            //----------------------------------
            //  円を回転
            //----------------------------------
            if (circle != null) circle.rotation = angle;
        }
    }
}

レンタルサーバー豆知識