2013年1月27日日曜日

Adobe Scout まとめ

・Adobe Scoutの概要とインストール(リンク先へ)
・モバイル版Adobe Scoutの導入(リンク先へ)
・Telemetry機能について(リンク先へ)
・Adobe Scoutの使用(リンク先へ)

2013年1月26日土曜日

Adobe Scoutの使用

Tipsを紹介します

Adobe Scoutの画面内の各項目の詳細は
Adobe Scout ファーストステップガイドに記載してあります。(リンク先へ)

フレームタイムラインの始点1フレームと終点5フレームに合わせて
5フレーム分の計測結果を右側の「概要」に表示しています

フレームタイムラインをアクティブにした後、カーソルキーの左右キーで
タイムラインの1フレームずつ計測結果を見る事ができます

Telemetry機能について

Telemetryを有効にしないと以下の項目がプロファイルできません

・ActionScriptコードの情報
・DisplayListレンダリング
・Stage3Dの詳細情報
下部のデータ設定で項目が「無効」になっています

Flash Builder 4.7でTelemetryを有効にする
Flash Builder 4.7では、Telemetryを有効にするチェックを入れてビルドを
行う事で、上記3つの項目が「有効」になります


Flash Builder 4.6以前またはFlash ProffesionalでTelemetryを有効にする
CUI形式のPythonスクリプトまたは
GUI形式のSWF Scout Enablerを使用します
・Pythonスクリプトを利用する(リンク先へ)
・SWF Scout Enablerを利用する(リンク先へ)

Telemetryを有効にするとデータ設定の各項目が「有効」なります

モバイル版Adobe Scoutの導入

モバイルからプロファイルする場合、以下の方法になります
各モバイルOS毎に用意されているScoutコンパニオンアプリケーションを
インストールしてデスクトップPCでプロファイルを行う

Adobe Scout Companion app for iOS(リンク先へ)
Adobe Scout Companion app for Android(リンク先へ)
Adobe Scout Companion app for Kindle(リンク先へ)

AndroidにScout コンパニオンアプリケーションを入れる

プロファイルを行うまでの手順
・Scout を実行しているコンピュータと同じ Wi-Fi ネットワークにデバイスが接続されていることを確認してから、Scout コンパニオンアプリケーションを起動します。
・「有効」をタップします。
・Scout を実行しているコンピュータの検索が実行され、すべての Scout インスタンスのリストが表示されます。
・コンピュータの名前が表示されたら、それをクリックして接続します。
・AIR3.4以降でビルドを行ったモバイルコンテンツを起動すると、Scoutに新しいセッションが表示されます。

Adobe Scoutの概要とインストール

Adobe Scout は、デスクトップ (Flash Player) とモバイルデバイス (Adobe AIR) の両方で実行する Flash コンテンツ用の次世代プロファイラーです

Adobe Scoutの入手から実際に使用するまでの手順をまとめていきます

導入条件
・Flash PlayerまたはFlash Debug Playerの11.4以降をインストールする(リンク先へ)
・Adobe AIRの3.4以降をインストールする(リンク先へ)

導入方法
・Adobe IDを利用してログインする(リンク先へ)
Adobe Scoutを選択してダウンロードする

・ダウンロード完了後、インストールを行う

Adobe Scout ファーストステップガイドでは仕組みや使用方法が詳細に
記載されています(リンク先へ)

この作成手順は2013年1月時点のものです。今後仕様変更の可能性があります。
ソースと関連ファイルの使用結果について、一切の保証と責任は負いません。

2012年8月14日火曜日

AIR3.3とStarlingFrameworkでUIControls2

UIControlのAndroid版を作成しました。
端末は、GalaxyNexusでバージョンは4(ICS)です。

2012年8月9日木曜日

AIR3.3とStarlingFrameworkでUIControls


UIコントロールをStarlingFrameworkで作りました。
Button,Switch,RadioButton,CheckBox,TextInput
ProgressBar,Slider,Alert

2012年7月31日火曜日

AIR3.3とStarlingFrameworkでViewChanger 2


AIR3.3とStarlingFrameworkを利用したビュー切り替え機能の GalaxyNexus版です。
フレームレートは50fps以上出ています。

2012年7月27日金曜日

AIR3.3とStarlingFrameworkでViewChanger


AIR3.3とStarlingFrameworkを利用したビュー切り替え機能です。
自作したコンポーネントは
スクローラー、トグルボタンバー、埋め込みフォントです。
iPodTouch(iOS4)で試しています。フレームレートは50fps以上出ています。

2012年6月29日金曜日

FlashBuilder4.6とAnettyでiOSで動くANEサンプルアプリのまとめ

まとめました。
1.FlashBuilder4.6とAnettyでiOSで動くANEサンプルアプリを作成する(リンク先へ)
2.SWCを作成する(リンク先へ)
3.aファイルを作成する(リンク先へ)
4.ANEttyでaneファイルを作成する(リンク先へ)
5.as3でサンプルファイルを作成する(リンク先へ)

as3でサンプルファイルを作成する

ActionScript モバイルプロジェクトを選択します。
プロジェクト名は、HelloWorldMobileにします。
作成したSWCファイルを追加します。
作成したANEファイルを追加します。

package {
 import example.ane.HelloWorldExtension;

 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.text.TextField;
 import flash.text.TextFormat;

 [SWF(width = '320', height = '480', backgroundColor = '#000000', frameRate = '60')]//iPhone3GS
 public class HelloWorldMobile extends Sprite
 {
  private var _text:TextField;
  private var extension:HelloWorldExtension = new HelloWorldExtension();

  public function HelloWorldMobile()
  {
   super();
   stage.align = StageAlign.TOP_LEFT;
   stage.scaleMode = StageScaleMode.NO_SCALE;
   addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
  }

  protected function addedToStageHandler(event:Event):void
  {
   removeEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
   main();
  }

  private function main():void
  {
   //Button
   var blueBox:Sprite = box(0x0000ff,100,32);
   blueBox.addEventListener(MouseEvent.CLICK,blueBoxClickHandler);
   addChild(blueBox);
   //Text
   _text = textField();
   _text.width = stage.stageWidth;
   _text.y = blueBox.height;
   addChild(_text);
  }

  protected function blueBoxClickHandler(event:MouseEvent):void
  {
   _text.text = extension.getHelloWorld();
  }

  private function box(color:uint,_width:Number,_height:Number=0):Sprite
  {
   _height ||= _width;
   var _sprite:Sprite = new Sprite();
   _sprite.graphics.beginFill(color);
   _sprite.graphics.drawRect(0,0,_width,_height);
   _sprite.graphics.endFill();
   return _sprite;
  }

  private function textField():TextField
  {
   var textFormat:TextFormat = new TextFormat();
   textFormat.color = 0xffffff;
   textFormat.size = 24;
   textFormat.font = "DroidSans";

   var textField:TextField = new TextField();
   textField.defaultTextFormat = textFormat;

   return textField;
  }
 }
}
ビルドに成功したら、次はリリースビルドを行いipaファイルを作成します。
ipaファイルを作成する為に
電子署名ファイルの設定ネイティブエクステンションの設定を行います。

ipaファイルが正常に出力したらiOS端末で試してみましょう。

ANEttyでaneファイルを作成する

項目が必要な箇所は

ExtensionID example.ane
VersionNumber 1.0.0
SWC Path (swcをビルドしたファイルパス)
Export Path (aneを出力するファイルパス)
PlatformiPhone-ARMにチェックを入れます
iPhone-ARMの設定として
NativeLibraryPath (.aファイルを出力したファイルパス)
Initializer ExtInitializer
Finalizer ExtFinalizer

になります。

項目が必要な箇所は

ADTPath (air3.3のadtファイルパス)
CertificationFile Path (証明書ファイルを作成したパス)
Certification Password (証明書ファイルのパスワード)
証明書ファイルはCreate New Certifiacation Fileボタンまたは、
FlashBuilderでも作成する事ができます。

設定が終了したら、Start Compileボタンを押します。

.aファイルを作成する

CocoaTouchStaticLibraryを使用します。
下記ソース FlashRuntimeExtensions.hをインクルードします。
このファイルはFlashBuilder4.6includeディレクトリにあります。 
例)/Applications/Adobe Flash Builder 4.6/sdks/air3_3/include
HelloWorldANE.h
一行目の表示は#import <Foundation/Foundation.h>になります。
#import 
#import "FlashRuntimeExtensions.h"

@interface HelloWorldANE : NSObject

@end

FREObject GetHelloWorld(
                        FREContext ctx,
                        void* funcData,
                        uint32_t argc,
                        FREObject arg[]
                        );

void ContextInitializer(
                        void* extData,
                        const uint8_t* ctxType,
                        FREContext ctx,
                        uint32_t* numFunctionsToTest,
                        const FRENamedFunction** functionsToSet
                        );

void ContextFinalizer(FREContext ctx);

void ExtInitializer(
                    void** extDataToSet,
                    FREContextInitializer* ctxInitializerToSet,
                    FREContextFinalizer* ctxFinalizerToSet
                    );

void ExtFinalizer(void* extData);
HelloWorldANE.m
#import "FlashRuntimeExtensions.h"
#import "HelloWorldANE.h"

@implementation HelloWorldANE

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}

@end

FREObject GetHelloWorld(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
    
    const char *str = "HelloWorld";
    
    FREObject retStr;
    FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &retStr);

    return retStr;
}

void ContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx,
                        uint32_t* numFunctionsToTest, const FRENamedFunction** functionsToSet) {
    *numFunctionsToTest = 1;
    FRENamedFunction* func = (FRENamedFunction*)malloc(sizeof(FRENamedFunction)*1);
    func[0].name = (const uint8_t*)"GetHelloWorld";
    func[0].functionData = NULL;
    func[0].function = &GetHelloWorld;
    
    *functionsToSet = func;
}

void ContextFinalizer(FREContext ctx) {
    return;
}

void ExtInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet,
                    FREContextFinalizer* ctxFinalizerToSet) {
    *extDataToSet = NULL;
    *ctxInitializerToSet = &ContextInitializer;
    *ctxFinalizerToSet = &ContextFinalizer;
}

void ExtFinalizer(void* extData) {
    return;
}