Html5について

参照サイト
http://alfalfalfa.com/archives/386705.html

Flash嫌いな人多いねw
adobeの製品はくそ高すぎると思う

PDFについてはもうしょうがない(あきらめ)

iphoneってPDFひらけるのかな?
だとしたらリンク先PDFだったりしたらかなりウザイだろうね

HTML5のie対応はie9?から対応なのか
ie6の普及率から考えるとまだまだHTML5の需要は当分先だろうな~

紹介されていたサイトの中で
音楽がかっこよかったのでここでも紹介

Html5対応ブラウザでみてね
HTML5 Canvas and Audio Experiment
http://9elements.com/io/projects/html5/canvas/

リファラーが取れない・・・IE限定

またまたIE地獄

javascript経由でページ遷移しなくてはならくて
飛び先でリファラーを取得しようとしても
location.hrefで遷移するとリファラーが取得できない・・・。

対処法

後からDOM操作で追加するでもよいのでformタグを追加します。

<form method="get" action="リンク先URL" id="Id名"></form>

javascriptはこんなかんじ

function clickAction()
{
location.target= "_blank";
document.getElementById("Id名").submit();
}

遷移先に変数を渡したい場合はリンク先URLのおしりに直接くつけるのではなく
inputタグを利用するとうまくいきます。
理由はわかりません。

<form method="get" action="リンク先URL" id="Id名"><input type="hidden" name="id" value="hoge"></form>

直リンのFlash(ブログパーツとか)
だとリファラーが取れないのでjavascript経由で取得することになるんですが
飛び先でリファラー取得する場合
まさかのIE地獄でしたとさ。

Tags: ,

ExternalInterfaceでつまづく

swfとjavascript間で通信するためのクラス
ExternalInterface Class でつまづいたのでメモ

かるくつまづいた 1

allowScriptAccessをsameDomainかalwaysにしないと
swfとjavascript間で通信できない。
追加先
parameタグ/embededタグ(アトリビュート)

まあまあつまづいた 2

objectタグのidの名前に"extanal"の文字列
例)"objextanal","extanalObj","myextanalObj"

を加えないとIEで
swfからjavascriptの関数を呼び出せるが戻り値がnullになって返ってくる。

注意!!
id名が重複すると最初に表示されたもの以外はnullになるみたい
複数同じswfをページくつける場合は動的はidを用意してください

ExternalInterface.call Internet explorerでnullが返ってくる件
http://quality.ekndesign.com/archives/2006/07/externalinterfa.html

かなりつまづいた 3

これもIE系
IEはIE8だけなくとも通信できた気がする・・・(あいまい)

objectタグに

classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

csとかでパブリッシュすればタグにデフォルトで含まれてるんだけどね

これがないと
swfからjavascriptの関数を呼び出せるが戻り値がnullになって返ってくる。

そもそもclassidってなんだよとかおもったけど
ブラウザの ActiveX コントロールを識別します。だそうだ。

こんなんだから
ExternalInterface Classは嫌いというか苦手意識がつくよね。

参考になったページです
ExternalInterfaceとかの落とし穴まとめ
http://0-9.sakura.ne.jp/blog/archives/2008/04/14224435.html
ExternalInterfaceを使ってみる (2)
http://www.project-nya.jp/modules/weblog/details.php?blog_id=644

Tags:

雪が降るエフェクトAS3

季節はずれですけど、
雪国生まれの僕が納得いく
雪エフェクトをちょっと昔に発見したので紹介します。
※多分adobeのサイトにあったサンプルをちょっといじった。

サンプルasはこちら
main.as
snowflake.as

Tags:

2つの色を混ぜてみる

2つの色を混ぜて中間色を求めるスクリプトが
必要になったのでググったらありました。

参照サイト: nondelion.com 2つの色の中間色を求める方法

~方法~

1, 2色とも16進数からRGB値を割り出す(ビットマスクを利用します)

2, RGB値を足す

3, また16進数に戻す

こんな感じ。

以下がサンプルソースになります

package
{
import flash.display.Sprite;

public class Main extends Sprite
{
//黒色
private var color1:Number = 0×000000;
//赤色
private var color2:Number = 0xff0000;

public function Main():void
{
init();
}

private function init():void
{
var sp:Sprite = new Sprite();

//赤と黒の中間色
var mixColor:Number = setMiddleColor(color1, color2);

sp.graphics.beginFill(mixColor);
sp.graphics.drawRect(0, 0, 100, 100);
sp.graphics.endFill();
addChild(sp);

}
private function hex2rgb(n:Number):Array
{
var rgbArray:Array = new Array(3);
rgbArray[0] = ( n >> 16 ) & 0xff;
rgbArray[1] = ( n >> 8 ) & 0xff;
rgbArray[2] = n & 0xff;
return rgbArray;
}

private function setMiddleColor(firstColor:Number, secondColor:Number):uint
{
var firstRGB:Array = hex2rgb(firstColor);
var secondRGB:Array = hex2rgb(secondColor);
var red:Number = int((firstRGB[0] + secondRGB[0]) * 0.5);
var green:Number = int((firstRGB[1] + secondRGB[1]) * 0.5);
var blue:Number = int((firstRGB[2] + secondRGB[2]) * 0.5);
var hex:uint = red << 16 | green << 8 | blue;
return hex;
}
}

}

>>サンプルASのダウンロードはこちらから

Tags:

MouseEventではまった事

マウスオーバーとクリックでインスタンス名が違う・・。

//コンストラクタ
private var tex:TextField = new TextField();
private var sp:Sprite = new Sprite();

addChild(sp);
tex.text = “hoge”;
sp.addChild(tex);

//イベントリスナー
sp.addEventListener(MouseEvent.ROLL_OVER, btnOver);
sp.addEventListener(MouseEvent.CLICK, btnCK);

イベント内容

private function btnOver(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}
private function btnCK(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}

なんで違うインスタンス名になっちゃうのーーーーーーー
きーってなってましたが、ここみて解決しました。

http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/events/MouseEvent.html#CLICK

target
ポインティングデバイスの下にある InteractiveObject インスタンスです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。

currentTargetを使えってことですか
そうですか。こうですか。わかりました。

>>サンプルソース

//コンストラクタ
private var tex:TextField = new TextField();
private var sp:Sprite = new Sprite();

addChild(sp);
tex.text = “hoge”;
sp.addChild(tex);

//イベントリスナー
sp.addEventListener(MouseEvent.ROLL_OVER, btnOver);
sp.addEventListener(MouseEvent.CLICK, btnCK);

イベント内容

private function btnOver(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}
private function btnCK(e:MouseEvent):void
{
trace(e.target.name, sp.name, e.target == sp);
}

イベント内容

private function btnOver(e:MouseEvent):void
{
trace(e.currentTarget.name, sp.name, e.currentTarget == sp);
}
private function btnCK(e:MouseEvent):void
{
trace(e.currentTarget.name, sp.name, e.currentTarget == sp);
}

くそ!

Tags:

flashがどこで開かれたか知りたい

swfが開かれているurlを調べたい
javascriptで簡単にできました。

location.href

例)

<script type="text/javascript">
alert(location.href);
</script>

サンプル

これだけです
こいつをflashvarsでSWFにおくればflashでもどこから来たのか解析できますね。

Tags:

FlashLite1.1をすこしいじった

お題目のとおり少しいじりました

携帯でオールflashのサイトです(swfを直接開いたタイプのアレ)

こまったことにdocomoのFlashLite1.1の携帯
上下キーのイベントがとれない・・・。

on (keyPress "<Up>") {
trace("Up");
}

on (keyPress "<Down>") {
trace("Down");
}

上下キーのイベントがとれないとか普通ないだろうよおお。
んで、さらに調べてたら上下キーはボタンに対するフォーカスにあてられてる模様

参照サイト KDDI au: マルチメディア・コンテンツ > Flashコンテンツ

フォーカスは上から順になります。
上からボタンが2つ並んでる状態を仮定すると

例)
○ ボタン1
○ ボタン2

一番最初に下キーを押せす
>ボタン1にフォーカスがきます

一番最初に上キーを押せす
>ボタン2にフォーカスがきます

(※注意)
ディスプレイにボタンが表示されてないとフォーカスはできません。

これを利用して
ボタンを透明、もしくは背景と同じ色にして

ボタン1に

on(rollOver,press){
trace("Down");
//gotoAndStop(3)
}

ボタン2に

on(rollOver,press){
trace("Up");
//gotoAndStop(1)
}

こんな感じで上下にスクロールできる携帯flashをつくりました
他にも方法があるかもしれませんけど。

ちなみにスクロールの一番上と下は片方だけでいいのでこんな感じにしときました。

一番上(1フレーム目)

ボタン1に

on(rollOver,press){
trace("Down");
//gotoAndStop(2)
}

ボタン2に

on(rollOver,press){
trace("Stay");
//gotoAndStop(1)
}

一番下(3フレーム目)

ボタン1に

on(rollOver,press){
trace("Up");
//gotoAndStop(3)
}

ボタン2に

on(rollOver,press){
trace("Stay");
//gotoAndStop(2)
}

これでオッケーとかおもってたんだけど
なんかフォーカスついちゃうし・・。

なので一番最初と最後のところは
2フレームづつ使いました。

説明むずかしー、こんなかんじでし
f

Tags:

小さなコトスペシャル

小さなコトでイライラしたので忘れていもいいように
書き留めときます。

stage.stageWidth/stage.stageHeightはブラウザによって値を取得できるタイミングがちがう

IEはコンストラクタで値を取得しようとしてもとれないわよ
firefoxはとれるけどね。
そうめん使ってる人はrunの時もステージサイズはとれないわ!
次のfunctionで取得して!!

flvをNetStreamクラスをつかって再生した時の音量を0にしたい
こいつがミソ! 無音にできます。

import flash.media.SoundTransform;

/*このへんはおきまり
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
*/
//音量調整するところ ※SoundTransform 第一引数と第二引数で右と左のボリュームだったきする。
var mySoundTransform:SoundTransform = new SoundTransform(0);
ns.soundTransform = mySoundTransform;

TextFieldのautoSizeはas2.0と書き方が違う
textField.autoSize = (Boolean値) だったのが
左ぞろえ右揃え中央ぞろえとか機能がついてんだね

定数 文字 説明
TextFieldAutoSize.NONE “none” なし
TextFieldAutoSize.LEFT “left” 左に揃えて整形
TextFieldAutoSize.RIGHT “right” 右に揃えて整形
TextFieldAutoSize.CENTER “center” 中央に揃えて整形

オブジェクトを最前面にしたい時

いっつも忘れるコレ
stage.setChildIndex(最前列にしたいオブジクトの名前,numChildren-1);

例)

var sp:Sprite = new Sprite();
var objS:Shape = new Shape();
sp.addchild(objS);
・・

中略
//spの中でobjS最前列にする
sp.setChildIndex(objS,numChildren-1);

しらべるといつもnumChildrenがくせものに感じる

xmlのパースの仕方

これもすぐ忘れる
本みないとわかんなくなる

アトリビュートの場合(アトリビュートがIDの場合)
var str:String = hoge@ID
長いしだんだん眠くなってきた。

長くなりそうだから続きは次にかきます。

Tags:

エア焼肉してみた

エア焼肉
お金がなくても焼肉を食べた気分になれるリクルートのflashサイト

niku

リクルートはなんだろうw
「肉が焼けるのを見ているのは楽しいからやった、後悔はしてない。」

そんな感じでしょうか。

とりあえずすべての肉をやいてみたけど
特になにもなしかよ!

ネタ的なものが出てくると期待したのにー

でもエア焼肉講座てきなmovieは秀逸。

参照URL
ねとらぼ:「エア焼肉」でお金がなくても焼肉気分 - ITmedia News

Tags: