ヤッチマイナシコ

たまには気分を変えよう

ナシコ

7/31

今週は東京へ

毎年恒例の東京行きです。

今日、会社で部長から「nashiko君、うさぎが来てるよ。」って言われたから
どこですかっーーーー!」ヽ(´д`*)ノ
と激しく返答。



台風の事だったんですね・・・。
「うさぎ」って名前なんなんだよ。



あぁ・・・俺のディズニーランドに行く計画が・・・。

2007/7/31 - 0:09 | コメント (4)

Category : nashiko駄文

7/27

夏だなぁ

あつーーーーーい!

暑過ぎです。
この暑さに耐え切れず潰れてます。
同居人の飼ってるハムスターも潰れてます。

海とかプールとか行きたい!!
お腹のお肉が多少気になるけど行きたいっす!

できれば人の少ない夕暮れ時とか・・・。朝一とか・・・。


もう7月も終わりですね。夏真っ盛り。それでも脳内は春!
ちょこっと恋愛気分で毎日楽しかとです。

2007/7/27 - 21:09 | コメント (0)

Category : nashiko駄文

7/24

とりあえず依頼の物を作ってみた(詳細)

今回作ったやつはお手軽簡単な製作方法ですので中心点などが結構適当です。簡易なので・・・。

では説明〜〜〜の前に工数はこんなもん。

1.内容(Tシャツ)を見せる領域をつくる。
2.内容(Tシャツ)を見せる領域に表示可能領域(マスク)を作成。
3.Tシャツの絵を描く。
4.拡大したTシャツの絵を描く。
5.ASごり押し。

ほいじゃ説明。

まず適当な四角を作ります。今回はWidth120px,Height170pxの四角をつくりました。
色はなんでもおkです。
その四角をMC化し、インスタンス名はTop_mcとします。
070724_00.gif
次にそのMCの中に入りラインと塗りとに分けて塗りをコピーし適当な位置に置いておきます
070724_01.gif こんな感じです。
背景以外をMC化しインスタンス名をつけます。
マスク名:TopInMask_mc
外枠名:TopInOutLine_mc

非常にわかりにくい名前です・・・。
背景は何もしなくてよいですが白色がいいかもです。
最後にすべて同じ位置(x:0, y:0)に移動し完了です(・ω・)b

次、Tシャツの絵を書きます。
1枚はマウスカーソルが乗ってないとき(rollOut)の絵。
もう1枚はマウスカーソルが乗ったとき(rollOver)の絵です。
それぞれの絵を描き、MC化してリンケージをします。
自分が作ったやつは人とTシャツだったので、rollOver時のリンケージ名はT_Shirt_Human_mc
Tシャツのリンケージ名はT_Shirt_mcとしました。

ここで!俺の手抜きとも言える部分ですが描いた絵の中心点をずらしてしまいました・・・。
スクリプトの処理が面倒なもので・・・。とかいう言い訳です。モシワケナイ。
070724_02.gif このような感じです。なので絵を描いたMC内で絵を選択して整列パレットで中心に合わせるようにしてください。
で、2枚の絵の中心点をずらしたところでスクリプトです。

今回の目的はマウスを移動しX軸で回転、Y軸で拡大縮小するというスクリプトがメイン?です。
なので表示領域の縦幅と横幅を使ってマウスの移動値と計算しましttttt・・・ごにょごにょごにょ・・・。
というか、あまり凝ったスクリプトではないので説明はいらないのかも?

コメントアウトを一応書いてますが、、、
ここんとこ詳しくっ!!とか希望があれば詳しく書きまする。

var topW = Top_mc._width;
var topH = Top_mc._height;
var humanZoomMin = 100;   //最初に表示される絵の拡大最小値
var humanZoomMax = 150;   //最初に表示される絵の拡大最大値
var t_ShirtZoomMin = 70;  //後に表示される絵の拡大最小値
var t_ShirtZoomMax = 130; //後に表示される絵の拡大最大値
var t_ShirtRotMin = -20;  //後に表示される絵の左回転最大値
var t_ShirtRotMax = 20;   //後に表示される絵の右回転最大値

//Top_mc内に空のMCを作成
var t_mc = Top_mc.createEmptyMovieClip("t_mc",0);
//ラインを一番上に移動させる
t_mc.swapDepths(Top_mc.TopInOutLine_mc);
//Top_mc内に作成しておいたマスクを反映
t_mc.setMask(Top_mc.TopInMask_mc);

//空のMC内にrollOver時に表示するTシャツを配置
var t_Shirt = t_mc.attachMovie("T_Shirt_mc","T_Shirt_mc",0);
t_Shirt._x = topW/2;
t_Shirt._y = topH/2;

//空のMC内にrollOut時に表示するTシャツを配置
var t_Shirt_Human = t_mc.attachMovie("T_Shirt_Human_mc","T_Shirt_Human_mc",1);
t_Shirt_Human._x = topW/2;
t_Shirt_Human._y = topH/2;

//マウスが乗ったときの処理
Top_mc.onRollOver = function(){
 var newScale;
 var newRot;
 var newHumanScale;
 var newT_Scale;
 var newT_Rot;
 t_Shirt._visible = true;
 t_Shirt._xscale = 0;
 t_Shirt._yscale = 0;
 t_Shirt_Human._alpha = 100;

 this.onEnterFrame = function(){
  
  if(t_Shirt_Human._alpha > 0){
  //最初のTシャツを拡大しながらアルファで薄くする
   newHumanScale = (humanZoomMax - t_Shirt_Human._xscale)*0.2;
   t_Shirt_Human._yscale = t_Shirt_Human._xscale += newHumanScale;
   t_Shirt_Human._alpha -= 20;
  }else{
  //後のTシャツをY軸で拡大縮小
   newT_Scale = Math.ceil(this._ymouse / topH *(t_ShirtZoomMax - t_ShirtZoomMin) + t_ShirtZoomMin );
   newT_Scale = (newT_Scale - t_Shirt._xscale)*0.2;
   t_Shirt._xscale = t_Shirt._yscale += newT_Scale;
  
   //後のTシャツをX軸で回転
   newT_Rot = this._xmouse / topW *(t_ShirtRotMin - t_ShirtRotMax) + t_ShirtRotMax;
   newT_Rot = (newT_Rot - t_Shirt._rotation)*0.1;
   t_Shirt._rotation += newT_Rot;
  }
 }

}

//マウスが乗っていないときの処理
Top_mc.onRollOut = function(){
 t_Shirt._visible = false;
 t_Shirt_Human._alpha = 100;
 this.onEnterFrame = function(){
  newHumanScale = (humanZoomMin - t_Shirt_Human._xscale)*0.4;
  if(Math.abs(newHumanScale)>0.1){
   t_Shirt_Human._yscale = t_Shirt_Human._xscale += newHumanScale;
  }else{
   t_Shirt_Human._yscale = t_Shirt_Human._xscale = humanZoomMin;
   delete this.onEnterFrame;
  }
 }
}

一番手っ取り早い、汚いサンプル(Ver8)はこちら。

本当は中心点を左上に合わせて計算したり、外枠などをAS書いたほうが勉強になりまする。
サンプルは以上なり。

※今回のサンプルにはTシャツがふにょふにょ動くスクリプトは省きました。

2007/7/24 - 22:39 | コメント (0)

Category : FLASH AS2

7/23

とりあえず依頼の物を作ってみた

Blogほっぱらかしてモンハンフロンティアやってました( ´Д`)ノ

コメントでhiyokkoさんからユニクロのTシャツ紹介のようなものを作れますか?とのことだったので実際に作ってみた。
テスト番みたいなものなので作り方とか適当になっちゃいましたが近いような微妙のような物ができました。

あまり時間を掛けれなく、1~2時間ってところで止めようと決めたのでこんな感じです。


スクリプトなどは明日書きます〜〜。

2007/7/23 - 22:22 | コメント (0)

Category : FLASH AS2

7/17

getURLでのPOSTを意地でやってみる(3)

これでラスト!

さて前回はFoxのポップアップブロックメッセージ文にPOSTしたデータが含まれるので回避するところなどやりました。
ですがIE6では全く動かないのでどの部分がおかしいかを調べるところで終了という感じでした。

ほいでは色々と実行しまくってみた結果です。

まず、調べたのはJavaScriptによるHTMLタグ生成後の属性部分。

js += 'var ce_form = document.getElementById("forms");';
js += 'ce_form.setAttribute("id", "forms");';
どーもこの部分がいけないようです。
なのでsettAttributeの部分をすべて
js += 'ce_form.id = "forms";';
js += 'ce_form.name = "forms";';
このような感じで指定するようにしてみました。

と、、、IE6はこれだけでバッチリ動きました。
んー、バージョンによって動いたり動かなかったりはよくある事ですがヤッパ面倒ですね。

んで最終的に完成したプログラムは↓です。
/*----- HTML側 -----*/
<script type="text/javascript">
<!--
function btnPress(){
document.getElementById("forms").submit();
}
// -->
</script>


/*----- FLASH側 -----*/
test_btn.onPress = function(){
var js:String;
js = 'javascript:';
js += 'body = document.body;';

js += 'var ce_form = document.createElement("form");';
js += 'ce_form.id = "forms";';
js += 'ce_form.name = "forms";';
js += 'ce_form.method = "POST";';
js += 'ce_form.action = "./test.php";';
js += 'ce_form.target = "_blank";';

js += 'var ce_input = document.createElement("input");';
js += 'ce_input.id = "hide";';
js += 'ce_input.name = "hide";';
js += 'ce_input.type = "hidden";';
js += 'ce_input.value = "TestMessage";';

js += 'body.appendChild(ce_form);';
js += 'ce_form.appendChild(ce_input);';
js += 'btnPress();';
getURL(js, '_self', 'POST');
}
こんな感じで出来上がりです。

※2007/08/09 追記
どうやら毎度 document.createElement("form");'; をするのはまずいようだ。
1度createしたら次から document.getElemntById を使い form名を取得するようにしないとうまく動かないようだ。


以前書いていた<div>タグは省きました。

このPOSTを作る過程で色々な事を試して苦しかったのはIE6でしたね・・・。
body宣言せず、createElementで<div>や<form>を作ったりして試しましたが全く動きませんでした。
HTML側に<div>を記述し属性を付けてgetElementByIdを使い宣言してあげるとうまく動いたので、「HTML側に記述があるものを宣言すればうまくいく?」と思い<body>を使えばOKか。と落ち着いたわけです。

そんなわけでFLASHのgetURLで_blankを使いPOSTするはこれで終了です。
その他やり方は様々あると思いますが参考ってことで(・ω・)b

毎度、文章が下手ですみません・・・。

2007/7/17 - 16:41 | コメント (0)

Category : FLASH AS2

7/12

getURLでのPOSTを意地でやってみる(2)

さぁ(2)です!

今日は実際にFlashのgetURL()にJavaScriptを記述するとこからです。
まず、俺の環境を紹介。

VistaなのでIEのバージョンは7です。
FLASHはバージョン8のPro。

で、まずはHTMLやらJavaScriptやらを全部埋め込む方法でやってみました。

var js:String;
js = 'javascript:';
js += 'body = document.body;';

js += 'var ce_div = document.createElement("div");';
js += 'ce_div.setAttribute("id", "sdiv");';

js += 'var ce_form = document.createElement("form");';
js += 'ce_form.setAttribute("id", "forms");';
js += 'ce_form.setAttribute("name", "forms");';
js += 'ce_form.setAttribute("method", "POST");';
js += 'ce_form.setAttribute("action", "./test.php");';
js += 'ce_form.setAttribute("target", "_blank");';

js += 'var ce_input = document.createElement("input");';
js += 'ce_input.setAttribute("id", "hide");';
js += 'ce_input.setAttribute("name", "hide");';
js += 'ce_input.setAttribute("type", "hidden");';
js += 'ce_input.setAttribute("value", "TestMessage");';

js += 'body.appendChild(ce_div);';
js += 'ce_div.appendChild(ce_form);';
js += 'ce_form.appendChild(ce_input);';

js += 'document.getElementById("forms").submit();';

getURL(js, '_self', 'POST');
こんな感じになるのです。
軽く説明しますと

createElement はタグを生成するもの。
<form></form>

setAttribute はタグに属性を追加するもの。
<form id="forms"></form>

appendChild はタグの間にタグを入れるもの(だと思っている)。
<form><input></input></form>

という感じで最後にJavaScriptで./test.phpへinputタグの"TestMessage"をPOSTでSubmitして終了という流れです。
受け取り側のPHPは$_POST["hide"]で受け取るようにしています。
070713_00.gif IE7動いた!!
Fox1.5と2もバッチリ動いたっ!ちゃんとデータも行き渡ってる!

フォーー!感激したっ!!が、


しかしやっぱり問題が。。。
まず、IE6が不動(´-`)・・・。
FoxでPOPUP扱いになっちゃってPOPUPブロックメッセージが吐かれるんです。
で、FoxのJavaScriptコンソールを見ると・・・。
エラー: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit]" nsresult: "0x80004005 (NS_ERROR_FAILURE)"
location: "JS frame :: javascript:body = document.body;
var ce_div = document.createElement("div");
var ce_form = document.createElement("form");
ce_form.setAttribute("id", "forms");
ce_form.setAttribute("name", "forms");
ce_form.setAttribute("method", "POST");
ce_form.setAttribute("action", "./test.php");
ce_form.setAttribute("target", "_blank");
var ce_input = document.createElement("input");
ce_input.setAttribute("id", "hide");
ce_input.setAttribute("name", "hide");
ce_input.setAttribute("type", "hidden");
ce_input.setAttribute("value", "TestMessage");

body.appendChild(ce_div);
ce_div.appendChild(ce_form);
ce_form.appendChild(ce_input);
document.getElementById("forms").submit();
:: <TOP_LEVEL> :: line 1" data: no]
あ゛ぁぁぁぁ!もろバレです(´Д`)
POSTしてる内容全部見えすぎっ!!

というわけで原因を調べてみたところ
js += 'document.getElementById("forms").submit();';
こいつをFLASH側に書いてるのが問題らしい。

でも、とりあえずsubmitはできるように関数化して、最初の部分に
js += 'function btnPress(){ document.getElementById("forms").submit();};';
を書いて
js += 'btnPress();';
を最後に追加して実行してみたが同じ事だった。
関数化しても同じカー・・・。まぁそりゃそうだよなぁ。


というわけで、HTML側にJavaScriptを記述しました。
<script type="text/javascript">
<!--
function btnPress(){
document.getElementById("forms").submit();
}
// -->
</script>
をHTML側に書きまして。実行したところFoxのPOPUPブロックメッセージがこう変わりました。
エラー: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost/posttest/posttest.html :: btnPress :: line 9" data: no]
キタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)人
さっき見えてたPOSTデータやら色々なメッセージ見えなくなりました!!
どうやらSubmitのJavaScriptをHTML側に書いてるとOKっぽい!!
しかしIE6は相変わらず不動。

今日の検証結果
 IE7IE6Fox1.5Fox2
Flash側にすべてのスクリプトを埋め込む異常なし動作しない動作するがPOPUPブロックメッセージでPOSTの内容が分かる動作するがPOPUPブロックメッセージでPOSTの内容が分かる
HTML側のJavaScriptにsubmitスクリプトを埋め込む異常なし動作しないPOPUPブロックメッセージが表示されPOSTの内容は分からないPOPUPブロックメッセージが表示されPOSTの内容は分からない

検証結果を見ると、IE6ではこの方法は駄目で、Foxはバージョンに関係なく動作するがポップアップ扱いになりブロックメッセージが表示されることが分かった。
IE6で動かないとなると話にならないので別のやり方で検証しようと思う。
FoxはgetURL()の_blankでうまくPOSTする事が可能なので、Flash側にブラウザをチェックする関数を入れて通常のgetURL()でやる方法も考えたが今回はパスしようと思う。

というわけで、今日はここまで。
すべてをFlash側に書くのは駄目だと判っただけでも十分!
次回、getURLでのPOSTを意地でやってみる(3)はIE6の対応と完成形に向けて条件を絞り込んでいきます。


ついでに、今日のスクリプトを書いておく。
/*----- HTML側 -----*/
<script type="text/javascript">
<!--
function btnPress(){
document.getElementById("forms").submit();
}
// -->
</script>


/*----- FLASH側 -----*/
test_btn.onPress = function(){
var js:String;
js = 'javascript:';
js += 'body = document.body;';
js += 'var ce_div = document.createElement("div");';

js += 'var ce_form = document.createElement("form");';
js += 'ce_form.setAttribute("id", "forms");';
js += 'ce_form.setAttribute("name", "forms");';
js += 'ce_form.setAttribute("method", "POST");';
js += 'ce_form.setAttribute("action", "./test.php");';
js += 'ce_form.setAttribute("target", "_blank");';

js += 'var ce_input = document.createElement("input");';
js += 'ce_input.setAttribute("id", "hide");';
js += 'ce_input.setAttribute("name", "hide");';
js += 'ce_input.setAttribute("type", "hidden");';
js += 'ce_input.setAttribute("value", "TestMessage");';

js += 'body.appendChild(ce_div);';
js += 'ce_div.appendChild(ce_form);';
js += 'ce_form.appendChild(ce_input);';
js += 'btnPress();';
getURL(js, '_self', 'POST');
}

2007/7/12 - 23:27 | コメント (3)

Category : FLASH AS2

7/11

getURLでのPOSTを意地でやってみる(1)

ハイお疲れ様です。コンバンワ。

えー、先日に続きましてまだ同じところをやっとります。
以前の記事で書きましたが、何をやっているのかと言いますと、

FLASHの関数 getURL を使い、PHPへPOSTするという非常に簡単な事なのです。


IEがナケレバナ(`Д´)

なんとまぁIEさんは、getURLのtargetを_blankにするとPOSTを許可してくれないのです。
受け取り拒否ですよ。Foxさんは素直で良いですね!!

で、「正しく送信できるGETで送ればいいやん。」って考えましたが、アドレス部に変数名などが表示されてダイレクト二に入力されると非常にまずいのです。
まぁ仕事じゃ良くある話じゃないですか?

そんなわけで久々に闘志を燃やしやってみました。

やりたい事
・FLASHからPHPへPOSTでデータを送り、開き方は新しいウインドウで開く事。

条件
・IEのバージョンは 2000、XP、Vista。標準なもの。細かい指定はない。
・Foxのバージョンは、1.5、2。
・POSTされたデータを受け取るPHPは固定のファイル名ではない。設定などで変えることが可能。
・中のデータが見られない事。(Etherealなどのパケット監視ソフトは除く)
・HTML内にはできるだけ無駄なタグを入れない。
・アドレスバーにはURL以外の表示はdame。

とまぁ俺の中の条件はこんな感じ。

ザーッと考えて、JavaScriptを見られるのは嫌なのでHTML内の記述は極力減らす事に決めました。
その他もろもろ考えまして、、、先輩から助言をいただきまして、、、

getURLからJavaScriptを呼び出す方法で進める事に決定!

さて、どうしますのかと言いますと、Flashで
getURL('javascript:alert("okokokokok");');
とか、書きますとJavaScriptを呼ぶ事が可能なのです。

まぁ、HTML内にはJavaScriptは殆ど書かないと決めたのでハードルは高そうです。


次回、「getURLでのPOSTを意地でやってみる(2) 」は実際にgetURLにJavaScriptを直で書くところをご紹介。

2007/7/11 - 1:41 | コメント (4)

Category : FLASH AS2

CopyRight 2004 ヤッチマイナシコー! All rights reserved.

Powerd By neustil.com