smart OR smart

Masato Nakamura weblog

iPhone用アイコンの作り方

iPhone用アイコンの作り方

ちょいと作ってみました。

iPhoneのSafariでブラウジングしていて、ホームページを「ホーム画面に追加」とすることで、いわゆる「デスクトップにある好きなサイトのショートカット」みたいな感じのことができます。iPhoneのホーム画面にクリップできるわけですね。

通常、それはサイトのスクリーンショットが縮小されたものになるのですが、こちらで画像を用意することも出来ます。ということで簡単な作り方を以下に。

・57px*57px のpng画像をつくる。
・名前を「apple-touch-icon.png」にする。
・サイトのrootにアップロードする。

以上です。

角丸とかハイライトとかはiPhoneが勝手にしてくれるので、ぺらぺらの普通の画像でいいです。シャドウとかぜんぶ勝手に入ります。ちなみに上記の元画像はこんな感じ。

こんなぺらぺらが角丸とかなって上の画像みたくなるからステキ!

ということで、iPhoneやらiPod touchやらもっている方は、Readをホーム画面に追加して確認してみてください。暇があればつきさやとか夜明けの味用のアイコンも作りたいなー。なー。

Yahoo バナーレギュレーション

たまにはFlashの記事でも。

先日、Yahooにのせるバナーの制作をしていたんですが、これのレギュレーションが思っていた以上に厳しくて参った。as3どころか、as2でもあれこれやってると死亡する率高いのね。

Yahooでは、死亡しないバナーのために事前にツールを公開しており、とりあえずはそこでチェックしていくことから始まります。

Abbey

これが噂のチェックツール。作ったバナーをここにあげて、チェッキングするわけです。

注意しなければならない点は、

・FlashPlayer ver.6で書き出す。
・当然、テキストやMCにフィルタが使えない。
as3は使えない。
・それどころか、as2でも一部のscriptが使えない。
Tweenerとかライブラリは使えない。
・1フレーム30kb以内などの制約があるので、1フレ目は軽めにする。
・要は、1フレだけあって、あとはscriptで動かしてるようなバナーだと死亡するかも。

とか、か。

つーか、いい加減、ver8あたりで作りたいんですけど、後ろを見すぎて未来が見えてないんじゃないの!IE6にいまだに対応しなくちゃいけない点も嫌ですね。早くそういうものから解放されたグローバルなところに行きたいです。

flashの上にdivを置く時の注意

先日やろうとしたこと。

flashを背景にしいて、上で何やかんややろうと思ってた。

方法論としては、まずflashを作る。
んで、下記を追加する。
<param name=”wmode” value=”transparent” />
<embed wmode=”transparent”>
これでflashの上に要素を置いても、flashがちゃんと下にくるようになった。

というわけで、今度は上におきたいdiv要素を作り、配置する。
置き方は、marginをマイナスにしようが、position:absoluteしようがどっちでもいい。
僕はmarginマイナスにしてみた。positionの挙動が、あまり好きじゃないんです。
absoluteとrelativeを使いこなさなくちゃいけないのが面倒で…。

さて、これで基本的にはオッケーです。
divんなかにすきなの詰めて遊べばいいと思います。

ところがどっこい、僕はそのdiv要素に、背景画像をしこうと思ってた。
これがうまくいかないんですよねー。
cssでbackgroud:url(img.jpg);とかやっても出てこない。
唯一、IE6だけ出てくる。Firefox、Webkit、IE7とかのモダンブラウザは全死亡。さすがIE6は格が違った。

どうしようかしばらく試行錯誤してみたんですが、どうも、これは仕様のよう。
backgroundプロパティで示されるものは、どうやら一番奥にいってしまうみたい。

仕方ないから、僕はflashの中でその背景を表示させることで回避しました。
flashに無駄なデータとレイヤーが出来るんで邪魔なんですが、仕方ない…。

あんまりいないと思いますけど、flashの上にdivを重ねようって時にはご注意を。
divの背景は、flashの上にはのりません。一番下にいきます。

Progressionを学ぶ(4)

すごい初心者なこと。
ProgressionのaddCommandは、ふつうにやると直列処理なのだけど、
たまには同時にコマンドしてよお願いだよぷろぐれっしょん、と思うこともあるので、メモ。

やり方は超簡単。

addCommand(
//並列処理
[
new AddChild(なんたら),
new AddChild(なんたら2)
],
//直列処理
new AddChild(なんたら3)
);

ってやるだけ。うわーい。こんだけだー。
他にもこんな方法もあります。

addCommand(
//並列処理
new ParallelList(0,
new AddChild(なんたら),
new AddChild(なんたら2)
),
//直列処理
new AddChild(なんたら3)
);

パラレルリストをnewする方ですね。
こちらは最初の引数に null とか0を入れないと動かないみたい?

まあ、とりあえずこれで並列処理ができるようになりました。
さて、またがしがし作っていきたいとこです。

Progressionを学ぶ(3)

Progression 勉強メモ。

あいだがだいぶ空きましたが、引き続き。
まじめに勉強するなら、やっぱり、実践しないといけないと思ってて、
そのために一つサイトのデザインを作ってました。
で、デザインはとりあえず出来たので、勉強再開です。

今回やったことは、フルFlashサイトなので、stage100%にするということ。

あ、僕はAS超初心者であるうえに、AS3.0の理解度も超低いです。
グローバル変数を説明することも出来ません。たはー。
ではいきましょう。

まずフルFlashなので、ヘッダーとフッターたちは、常に一番上と下にあってほしいです。
見た人がウィンドウをリサイズしても、自動的に移動するようになっていてほしい。
つまり、リサイズ処理ですね。
これを分からないなりに苦心して考えました。

まずヘッダー。
これは一番上に常にあるも何も、初期値にしときゃ勝手にそこにあるので放置。
何はともあれインスタンスを作成。

var headerBG:HeaderBG = new HeaderBG();

なお、基本的なやり方は、特集:Flashのフレームワーク「Progression3」を始めてみよう!にのっとってます。
名前の付け方というか、なんというか。

んで、フッターですか。

var footerBG:FooterBG = new FooterBG();

で、あとはコマンドでaddChildしてやりゃヘッダーフッターは生まれますね。
ここまではいい。
けど、フッターを一番下に表示させるにはどうしたらいいだろう?
フッターは30pxの高さで作られているので、一番下というのは、つまり、
(ステージの高さ-30px)で常に表示されていればいいということになる。
そうすれば、いつリサイズされても、それは常にウィンドウの高さ-30pxの位置にある。
ということは、こうかな?

protected override function _onLoad():void {
//インスタンスの作成
// 実行したいコマンドを登録します。
addCommand(
new Prop(headerBG, { x:0, y:0} ),
new AddChild(progression.container, headerBG),
new Prop(footerBG, { x:0, y:progression.container.stage.stageHeight-30} ),
new AddChild(progression.container, footerBG),

おお。出来た。
しかし、これではリサイズをすると変わってしまう。
AS2.0的に言うと、onClipEvent(load)で位置を指定したようなもんですね。
ロードされたその時はいいけれど、リサイズ後の処理はまったく考えていない。
なので、AS2.0的なonClipEvent(enterFrame)な処理をしなければいけません。

で、しかしAS3.0をまったく理解してない僕はどうすればいいのかさっぱりだった。
だから、グーグル先生に聞いた!

すばらしい人がいるもんですね。
Progression3はじめてメモ
ここのリサイズ処理を超参考、どころか、まんま、まるパクリしてみました。

するとこうなりました。

protected override function _onLoad():void {
//インスタンスの作成
// 実行したいコマンドを登録します。
addCommand(
new Prop(headerBG, { x:0, y:0} ),
new AddChild(progression.container, headerBG),
new AddChildAt(progression.container, footerBG,10),
function():void {
_onResize();
progression.container.stage.addEventListener(Event.RESIZE, _onResize);
}
);
}
private function _onResize(event:Event=null):void
{
var containerWidth:Number = progression.container.stage.stageWidth;
var containerHeight:Number = progression.container.stage.stageHeight;
footerBG.y = containerHeight - 30;
}

おっ。出来た!
なお、footerBGは上のインスタンス作成のところに入れておくと出来ません。
当たり前ですね。でも、その当たり前に気づかずに1、2時間悩みました。

とりあえず、これでフッターを一番下、常にステージの高さ-30pxの位置に置くことは成功。
ふう。時間かかったな。
次はコンテンツに入ってみたいと思います。


Page 1 of 212