jQuery風 自作ライブラリーの制作 その1
javascript でjquery使うと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枚絵に貼り付けなおして
HTML5のcanvasにdraw命令に置き換えてみましたが....
あとで調べてみるとベクター画像はビットマップにしなくても
そのままHTML5で使う方法があるみたい。
→http://labs.adobe.com/technologies/wallaby/
- 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までのパス
- 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加えてみましたが