無料アクセス解析

HTC Desireでのcanvasのバグ?

CS5発売セミナーで、HTML5版の「へぇボタン」を作りました。


canvasで円を書いて、中央にへぇという画像を配置するという簡単なものです。


連動プレゼン用のウェブアプリなので、canvasとJavaScriptでFlashっぽいぐにゃぐにゃした動きをつけらればいいかな、と思って作っていたのですが、HTC Desireでは画像がうまく配置できませんでした。


iPhoneと、NexusOneは中央に配置されるのですが、Desireは中央に表示されません。




どうもcanvasのdrawImageがうまく動いていない印象でしたので、実験してみました。

■実験
40pixのグリッドをcanvasで書き、黄色のビットマップ(80×80)を座標(120 , 160)に配置しました。


HTML側

1
<canvas id="c1" width="320" height="480"></canvas>



JavaScript側

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
 
var canvas = document.getElementById('c1');
var ctx = canvas.getContext('2d');
 
ctx.clearRect(0,0,320,480);//消す
ctx.save();//状態を保存
 
 
//線を描くと宣言。
ctx.beginPath();
 
//40x40のグリッドを設定
for(i=0;i<=12;i++){
	ctx.moveTo(40*i, 0);
	ctx.lineTo(40*i, 480);
	ctx.closePath();
	ctx.moveTo(0, 40*i);
	ctx.lineTo(320, 40*i);
	ctx.closePath();
}
 
//グリッドを描画
ctx.stroke();
 
 // Imageオブジェクトを生成
var img = new Image();
 
//80x80の画像のパス。
img.src = "img/bitmap80x80.gif?" + new Date().getTime();
 
//画像が読み込み完了したら、X:120、Y:160に配置
img.onload = function() {
	ctx.drawImage(img, 120, 160);
}




■結果
以下が、各デバイスでのスクリーンショットになります。

■iPhone
画像の位置、サイズともに正しく表示される。
■NexusOne
NexusOneも画像の位置、サイズともに正しく表示される。
■HTC Desire
Desireだけズレる。
位置も大きさも指定した数値の1.5倍され、配置されました。
しかしグリッドは拡大されず、上手く描画できているようです。

各デバイスの解像度は

iPhone:320×480(HVGA)
Desire:480×800(WVGA)
NexusOne:480×800(WVGA)


なので、1.5倍になるってのはわからなくはないですが、
NexusOneはiPhoneと同じ様に描画されています。

結局、Desire対策として、画像はCSSで配置する事にしました。


HTML5の対応がそれぞれに違う事は、問題無いと思っているのですが、
この程度くらいは、同じフォーマットで作れるようにしてもらわないと、困りますね。

CS5wpセミナーが終了!

ADOBE CREATIVE SUITE 5 Web Premium 発売記念セミナーでお話させていただきました。


■USTアーカイブ (岡田セッション分)

http://www.ustream.tv/recorded/7241315

当日は、ご覧になった方はご存じかと思いますが、サプライズで結婚を祝っていただきました。
Adobe 西村様、trick7 寺井様、スピーカー皆様、スタッフの皆様、会場の皆様、USTの皆様、本当にありがとうございます。


打ち上げで西村さんからサプライズ計画の全てをお聞きし、そしてtrick7さんのStarWarsのムービーを見せていただきました。
本当に感動し、言葉が浮かんできませんでした。


今思えば、
西村さんの最初の挨拶を見させないように、楽屋のテレビが全て消され、
なぜか轟さんが必要以上にAndroidのバージョンの話を振ってくる。
最後には、わざと会場で迷子にさせられました。

そしてなんと僕がうろうろする度にスタッフの方がモニターを消していっていたそうです。

ご迷惑をおかけいたしました。。


会場の皆さん、USTの皆さんもサプライズの部分だけコメントをせずにいただきありがとうございます。
いきなりで本当にびっくり&うれしかったです。

自分にとってCS5は特別なバージョンになりました。
こんなblogで言うのもなんですが、妻を幸せにしていきたいと思います。
生暖かく見守っていただければと思います。


さて、スライドの公開と、USBデータの訂正と、スライドで使ったflaファイルになります。
スライドのモバイル連動部分はごっそり削除しているので、そこはご了承くださいっ!

■スライド

This movie requires Flash Player 9


■USBデータ訂正
01-TouchEvent 、03-TransformGestureEvent
TouchEventがシングルタッチ用、GestureEventがマルチタッチ用とタイトルがつけられてありますが、セミナーでの説明の通り、どちらもマルチタッチ用イベントです。
 TouchEvent : TouchPointを取得できます。取得できる数はデバイスにより異なります。
 GestureEvent : デバイスからジェスチャーを受け取ります。

■追加データ
セミナーで使ったサンプルデータです。
fla0531



ADOBE CREATIVE SUITE 5 Web Premium 発売記念セミナー



ADOBE CREATIVE SUITE 5 Web Premium 発売記念セミナーでお話させていただきます。
もう東京会場は定員に達したのですが、大阪会場はまだ若干余裕があるみたいです。
無料ですし、是非いらして下さい!!


内容は、もちろんモバイルFlashについてお話したいと思います。

が!!

ここのところ、業界が劇的に動いていて、どういう話をしようかなぁと日々ニュースを追う毎日。
なので内容はまだぼんやりとしか、決めていません。

ほんとは、iPhoneアプリ書き出しとか、そのあたりを含めて、Flashマンセー!みたいなお話にしようと思っていたのですが、、Appleめ!こんちくしょう!

今月末の発表時に、業界がどういう状況かわかりませんが、この波乱の中、注目を集めながら生まれる「CS5」に立ち会える事についてはうれしく思います。
是非、岡田の混乱ぶり、はずしっぷりを笑いに来てください。


■ADOBE CREATIVE SUITE 5 Web Premium 発売記念セミナー

■詳細情報
http://adobecs5wp.jp

■スピーカー
 株式会社スイッチ 鷹野雅弘
 面白法人カヤック 林真由美
 Trick7 寺井周平
 hi-posi Inc. 岡田昇三
 リクルートメディアテクノロジーラボ 鈴木拓生
 –
 アドビ システムズ 株式会社 轟啓介
 アドビ システムズ 株式会社 西村真里子

■大阪会場
 日時:2010年5月25日(火) 17:00-20:50 (16:30開場)
 場所:大阪 OBP円形ホール(大阪府大阪市中央区) (300名)
 参加費用:無料

■東京会場
 日時:2010年5月27日(木) 17:00-20:50 (16:30開場)
 場所:東京 赤坂ブリッツ(東京都港区) (500名)
 参加費用:無料


Adobe 連載3回目




第3回目は、「待ち受け時計を作ろう!」です。
http://www.adobe.com/jp/devnet/devices/articles/clock_flashlite.html

待ち受け時計を機能毎に区切って制作する事によって、FScommand2を説明する、という事を行いました。
機能毎に区切って解説しているので、うまく利用して自分だけの待ち受けを作ってみてください。

サンプルの待ち受けはQRコードからDLして使っていただく事もできますので(もちろん無料)
作るのめんどくさいよって方は是非使ってみてくださいっ!

ソースもDLいただけます。
ソースは最適化まで行っていないので、是非チューンナップして使ってみてください。


そしてそして、このFlashLite入門講座も今回が最終回とあいなりました!!!
遅筆にかかわらずお尻を叩いてくださり、最後の最後まで編集いただいた今里さん、
お声掛けいただいたAdobe 西村さん、太田さん、ありがとうございました!

FlashLite2で作るメリット

F-siteでもお話させていただいたのですが
僕自身、最近はFlashLite2.0以降ってどう違うの?
という問い合わせも多くあり、まとめてみました。


■FlashLite2.0コンテンツの対象端末

まず、FlashLite2.0を対象とした場合、以下の端末が対象端末になります。

docomo705i 905iシリーズ以降の端末(FlashLite3.0~)
auW4xシリーズ以降の端末(FlashLite2.0~)
SoftBank81xシリーズ以降の端末(FlashLite2.0~)


■FlashLite2.0端末の普及率

残念ながら普及率は発表されていないので、現実的にユーザー数が多いだろうと思われる07年~10年のFlashLite搭載端末328端末のFlashLiteの対応状況を調べてみました。
端末で言うと、docomo 703i 903i以降 , au W4xシリーズ以降, 81xシリーズ以降 になります。

07~10発売済み端末の対応状況
注意:バージョンの普及率ではありません。
FlashLite1.155端末15.9%
FlashLite2.x141端末43.9%
FlashLite3.x132端末40.2%

2と3を合わせて84.1%ですので、かなりの割合である事がわかります。
参考までですが、自分が管理しているサイトの実際のアクセスベースで1.1が10%以下ですので、もうFL2で開発でもいいかと思います。

ですが、気をつけなければならないのは、docomoの契約数(09年12月現在)が、全体の50%以上ありますので、普及端末である、703,903の存在はまだ大きいのかなと思います。
FlashLiteの場合、PCの様にユーザー側でPlayerのバージョンを上げる事ができないので、
過去バージョンの乗った機種は対象端末から外れる、という事になります。



■FlashLite2を使うメリット

では実際、どんなメリットがあるのでしょうか?


1)ActionScript1 or 2で開発できる。
 これが一番のメリットですね。
 それによって使える以下の機能が大きいです。

 ・htmlレンダリングが使える。
   ex) デバイスフォントの途中でも色を変えられる。
      デバイスフォントにアンダーバーが引ける。
      ※逆に今までできなかったんかい!とツッコミが入りそうですが。。

 ・_urlプロパティが使える。
   a.swf?a=1&b=2とかの引数を_urlで取得して分解して使う。
   FlashLiteの場合、外部通信はボタンアクションを使って行わなければならない為、
   ユーザーにアクションを促さずパラメータを受け取れるのは大きいですね。
   →確認した端末
     docomo:N-08A(FL3.1),N-01A(FL3.1),N705i(FL3.0)
     au:CA001(FL3.0),W45T(FL2.0)
     SoftBank:821SH(FL2.0)


2)すこし大きい画面サイズで作れる。
 →mixiアプリは240×320が多いです。が、ちょっとそれは大きすぎかと思いますが。。

3)メモリがたくさん使える。
 →どのキャリアもだいたい3MBくらいある。

4)外部jpgをloadできる。
 →1.1では、jpgをロードできないので、swfにする必要があった。

5)ムービーが圧縮できる。
 →パブリッシュ設定で、ムービーの圧縮が選択できる。

 実験してみました。
 ・ベクターの圧縮率
   複雑なベクターデータを用意し、
   1.1で、100KB → 2.x ムービーの圧縮で、 68KB
   →結果:32%ダウン!
 ・ASの圧縮率
   ActionScript 変数を大量に定義。
   1.1で、10KB → 2.x ムービーの圧縮で、 906Byte
   →結果:約90%ダウン!
 ・画像の圧縮率
   ビットマップ画像を100KB分を用意
   1.1で、100KB → 2.x ムービーの圧縮で、 95KB
   →結果:5%ダウン!

 ベクター画像とASについては圧縮が結構かかります。画像は元の画像(jpg)の設定によるみたいですね。


■なんとなく期待されているができないもの。

・容量は100KBのまま
 →容量的には1.1と変わらない。docomo3.0は外部ファイル合わせて100KBまで、
  auは1ファイル100KB、SBは外部ファイル合わせて150KB

・外部通信方法も同じ
 →あいかわらず、キー操作(onハンドラ)が無いと外部への通信はできません。
  ちなみにキー操作なしで外部通信ができるのはdocomo FL3.1のみ。

・SharedObjectは使えない
 →docomo 3.x ブラウザのみ使用可能、au,SBはデータフォルダのみ使用可能なので、
  共通項目として使えない。

・ビデオ再生もできない
 →docomo iモードブラウザ2.0端末のみ。



というわけで自分的にはあまり大きなメリットを感じられないので「どうしても」という場合以外はまだ1.1なのかな、と思っています。
ただし、再生環境的にはFL2でも大丈夫な様な気がします(<ここはプロジェクトによります)

なので、今FlashLiteに興味をもっていらっしゃる方が、わざわざFlash4のスラッシュシンタクスをわざわざ覚えなくてもすぐに開発できるので、そういう意味では非常にメリットがあると言えます。



F-siteでセミナー



あけましておめでとうございます。
かれこれ、4カ月もblogを休んでしまいました。ツイッターが楽すぎて。。

ひさしぶりであれですが、今日はお知らせがあります!

今週末に、

な、なんと!!!!あの「F-site」でお話させていただきます!!


■F-site 2010/2/7(日) 13:15~17:00
「コンテンツ制作、目のつけどころと制作事例」
demo1 「ざっくり解説 Flash Liteの仕様 2010」岡田昇三@hi-posi氏(50分)
demo2 「ケータイ案件の中身とMR新作発表会」サブリン@メタルレッド氏(50分)
demo3 「宇宙ワンダーについて&おまけのモバイル事例紹介」馬場鑑平&原ノブオ@bascule氏(50分)

http://f-site.org/articles/2004/03/25003056.html



僕以外の方は超超有名な方です。そして僕はトップバッターです!!
これは2009年のM1における「くまだまさし」的なポジションだと思っています。
そう!完全に前説的な感じですね!後半の3人方が、やりやすくなる様に場を温める事を命題にしてやりたいと思います。


内容の方は、
F-siteに来られる方はFlasherの方ばかりだと思うので、いつもより具体的に細かい感じでやっていきたいと思います。

・いつもの日本のFlashLiteの仕様に、
・FlashLite1.1と、FlashLite2.0端末とは何が違うか?
・ファイルサイズのダイエット方法
・制作ワークフロー紹介(時間があれば)

をやりたいと思っています。

まだ準備していないので、なんとも言えませんが。

今週末なんで、今blogを見たあなた!!
すいませんが、是非とも今申し込みをしていただけないでしょうか?汗
告知が遅れて超焦っています。

■お申込みはこちらから
http://f-site.org/FS-APL/FS-Form/form.cgi?Code=seminar_ani


■詳細はこちらから
日  時:2010/2/7(日) 13:15~17:00
場  所:国立オリンピック記念青少年総合センター センター棟 3階 311室
住  所:東京都渋谷区代々木神園町3-1(地図)
募集人数:160名
参加費用:1,000円
http://f-site.org/articles/2004/03/25003056.html


是非、携帯電話を持って、お越し下さい!!!!

10/15に東京でセミナーします。

ginza

な・なんと、大阪を沸かした(!?)あの「へぇ~」が東京進出!?

社内セミナーという形で東京でも一度お話する機会をいただいたのですが、今回の様なオープンな形式では初めてです。

というか、講師:岡田って誰やねん!的な感じなので人数が集まらない可能性が非常に高く、不幸にもこのblogを見てしまったそこのあなた!関東近郊ならボランティアだと思って是非来て下さいっ!

■Flash Developer Next Dimension Seminar
モバイル×Flash:モバイルアプリケーションでFlash活用する際のポイントと最新事例
日時:2009/10/15(木) 19:00~21:00
場所:銀座(パソナ 銀座TSビル4F)

↓詳細はこちら
http://www.pasonatech.co.jp/event/index.jsp?no=1635
※申し込みには、PASONAさんに仮登録する必要があります。

無料です。

そしてなんと2時間もあります。。

内容は、
前半は仕様についての解説。
後半は、お勉強という事で、実際に待ち受け時計を作る説明をします。

後半は実際に待ち受けを順に作っていきます!

今回も携帯連動プレゼンをしようと思っているので、
とにかく人が来ないと、ほぼ面白くないので、ボランティアと割り切って、携帯持って来てくださいっ!

[FlashLite]小数点を含んだ計算結果のバグ

お・鬼すぎる、、FlashLiteさま。。

a = 1;
b = 0.01;
c = 10;
d = (a/b)*c;
trace(d);
「→出力結果:999.99999907」

本来なら、答えは
「→出力結果:1000」

これでしょう。

なので、文字列として扱って、カンマの位置を操作する、という荒業で回避しましたが、、
根本的な解決方法ではありませんね。。。

twitter

今更ですが、twitterを始めました。
いやーblogよりtwitterの方が楽ですね!

細々とやっていきます。

http://twitter.com/shozoxxx



Adobe 連載2回目

adc2

Adobe DevNetでの第2回目がアップされました。

第2回目は、
「Flash Liteの再生環境から見た注意点」です。
http://www.adobe.com/jp/devnet/devices/articles/environment_flashlite.html

ブラウザ再生(インライン、インタラクティブ)、待ち受け、それぞれの挙動に関して書きました。
(※たとえば、待ち受けだと、外部への通信ができない、とか、です)


今回、インタラクティブ再生のSWFのステージサイズについても触れているのですが、
よく240 x 240 とか言いますけど、あれって小さいですよね。やたらセンタリングされるし。。

むー、他の方はどのステージサイズで作られているのでしょうか?
自分は240 x 260で作る事が多いのですが、案件によっては 240 x 320 とかもあります。

とはいえ、
自分はサーバーで動的に生成するのが一番だと思っているので、予算が合えば機種毎の自動生成をお勧めしています。

動的生成できない場合は、ステージサイズを決め打ちでするしかなく、いつも難儀しているのですが、ほんと皆さんどうしていますか??

、、謎であります。