jQuery風 自作ライブラリーの制作 その1

javascriptjquery使うとDOM回りの記述がシンプルに
なっていいんだけど どうにもサイズがでかい。
そのために記述の互換性のある jqMob やらzepto.js
が作られているのだが 自分でも作れるんじゃないかと
思っていろいろ調べてみました。
まずは DOMへのアクセスをそれ風にするものとして
下記のような 関数を定義してみました。

function $(nodeid){
return document.getElementById(nodeid);
}

のスタイルを変更する場合 下記のようなアクセスでちょっとjquery風に
なりました。

$('hoge').style.top = '100px';

まぁ中身が getElementByIdなんで idにしか対応してません。
jquery だとclass やセレクターが使えるんでそのへんも
似たような作りにしたいところです。
引数の文字列の先頭文字列で振り分けて
#がついた場合 
getElementById
.がついていたら
getElementByClassName
を呼び出すようにすれば classにもidにも対応するようには
できそうですね。

iphoneアプリ JSON Frameworkについて

iphoneアプリでサーバーとのやり取りにJson形式を使うので
JSON Frameworkを使ってみた。
どうもnullのvalueがあるとうまく処理できないみたい
{"hogehoge":0,","name":null}
データーがない場合 "なしでnullと記述するようなのだが
{"hogehoge":0,","name":""}
としないとだめみたい。
フレームワークのソースに手をいれようか迷ったが

//受信したデータNSDateをNSStringに変換
NSString* json = [[NSString alloc] initWithData:_responseData encoding:NSUTF8StringEncoding];
//null 部分を 「""」に置換
NSString* json2 = [json stringByReplacingOccurrencesOfString:@"null" withString:@""];

NSDictionary* jsonItem = [[json2 JSONValue];

のように文字を置換して対応しました。

AS2.0 ステージ上のインスタンスだと コード補完がきかない件について

バナーの仕事でAS2.0の作業をひさしぶりにしております。

ステージに配置した ムービーにインスタンス名をつけて
スクリプトからアクセスする際、インスタンス名の型がわから
ないので IDEのエディタ上で
コード補完が働かない。
ここの記事によると
ステージに配置したコンポーネントを、ドキュメントクラス内で使う方法
スクリプト内でも 
var hogehoge:MovieClip;
インスタンス名を再定義してやるといいことがわかった。
しかし、インスタンス中で定義したインスタンス名に関しては
var hogehoge.hogehoge:MovieClip;
のような宣言ができないため コード補完はきかんのかなー
と思っていたが.....

続きを読む

HTML5 iphone4の描画が遅い件について

canvasを使ったコンテンツがiphone4だと遅いという報告が
あった。確かに旧機種のiphone3GS iphone3Gだとなめらかに
動いているのがiphone4だとカクカクになっている。
 もとが横320ドットのコンテンツなのだが

meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,maximum-scale=1"

のように指定してやると、iphone4の解像度640x960の解像度(横2倍)にスケーリングされるのだが、この状態だとなぜか遅くなるみたい。(device-widthはなぜか旧機種と同じ320になっているらしい)

続きを読む

フラッシュ→HTML5 移植に関して

 スマートフォン向けにフラッシュアプリをHTML5に移植しています。
やり方がわからないので、画像をすべて1枚絵に貼り付けなおして
HTML5canvasにdraw命令に置き換えてみましたが....
 あとで調べてみるとベクター画像はビットマップにしなくても
そのままHTML5で使う方法があるみたい。

  1. FlashHTML5に変換するツール Adobe「Wallaby」

 →http://labs.adobe.com/technologies/wallaby/

  1. Smokescreen

→ [ http://smokescreen.us/:title=http://smokescreen.us/]

続きを読む

Androidアプリでproguardを使った難読化について

最新のSDK(2.3)だと標準搭載されているようですが
Eclipseで開発していた場合 ant用のプロジェクトを
作成する必要があります。
作り方は過去記事参考
1.proguard http://proguard.sourceforge.net/ をダウンロード
し解凍する。
2.ブログから
add-proguard-release.xml を procfg.txtをダウンロードして
ant用のbuild.xmlなどと同じフォルダに配置します。
3.local.propertiesに下記値を追加する
proguard.dir=ProGuardのlibまでのパス

  1. buid.xmlの編集

冒頭

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE project [
<!ENTITY add-proguard-release SYSTEM "add-proguard-release.xml">
]>

<project name="MyProjectName" default="help">
&add-proguard-release;
←この行を追加

の2箇所を変更する
4.ant release でリリース用apkの作成時にproguardが実行される

続きを読む

iphoneアプリ Gamecenter機能対応ではまる

GameCenterのランキング機能対応のバージョンアップしようと
したのですが、itune登録時に(invalid binary)のエラーが発生して
しまいました。
いままでSDKは3.2で開発してましたがGameCenter機能は
OS4.1以降でないと使えないため 4.2でプロジェクトを
ビルドしなおしたんですが...
ITUNE上で確認すると
「your application is not enable gamecenter 」とかいう
メッセージが出ています。
いろいろ調べてみると info.plistに何か加えないといけないようです。
info.plistの Required device capabilitiesキーを追加し
gamekit のキーをtrueにするということなんですが
info.plistにRequired device capabilitiesキーを追加すると
Arrayに自動的になってしまい。Dictionaryにできないので
gaekitの値をtrueにできません。
しょうがないので
item0 の値にgamekit加えてみましたが

続きを読む