Powered by Movable Type 3.16Syndicate this site(XML)
2012.01.06

[SCRIPTMT : ページ分割プラグイン

○プラグイン
【多謝】
静的ページ用ページ分割プラグイン:PageBute
http://www.skyarc.co.jp/engineerblog/entry/2642.html

○設定方法
【多謝】
http://likearpeggio.blog63.fc2.com/blog-entry-218.html

○注意点
ブログの設定で「ブログ記事の表示数」を[0]にしておく。
そうしないと1件目が出ないとかうまく表示されなくてイライラすることになる。

Posted by inami at 12:47 PM
2011.06.04

[SCRIPTAS3 : for文でイベントリスナーに引数(i)を渡す

■多謝
http://www.bute-studio.com/lab/2010/06/loader-as30num.html
http://lab.gpol.co.jp/tsubo/2011/03/as3-addeventlistener.php

Loaderクラス等を使ったときにfor文の繰り返しの引数(i)をイベントリスナーのfuncitonにも適用させたい。でも普通に書くとイベント型(e:Event)を1つだけしか引数にできない決まりだからエラーがでる。
そんな時はイベントハンドラに引数(i)を渡しつつその内側でfunction(e:Event):voidを返してあげる。

これは助かったわ~。
Posted by inami at 05:17 PM
2010.05.04

[SCRIPTJS : Get delicious links

デリシャスのブックマークを取得したい!

■多謝
http://2xup.org/log/2006/12/25-2118

デリシャスのJSONフィード
http://del.icio.us/feeds/json/XXXXXX/?count=10
これをたたくとJSON返ってきますんで
こいつをJSでさばくということです。

var ul = document.createElement('ul');
for (var i=0, post; post = Delicious.posts[i]; i++) {
  var li = document.createElement('li');
  var a = document.createElement('a');
  a.setAttribute('href', post.u);
  a.setAttribute('title', post.d);
  a.appendChild(document.createTextNode(post.d));
  ul.appendChild(li);
  li.appendChild(a);
} 
document.getElementById('delicious_update_list').appendChild(ul);
//u URL
//d タイトル
//n メモ
//t タグ

呼び出す場所のdiv等に「delicious_update_list」というidを振るべし。このJSだとリストタグとして返ってきますよ。

Posted by inami at 11:26 PM

[SCRIPTJS : Get fricker images

フリッカーの画像を取得してHTMLに貼り付けたい時

●その1
Widgetがあるよ
http://www.flickr.com/badge.gne

●その2
JS(JSONP)でもってこれるよ

■外部JS

function flickrJsonAPI(json){
var div = document.getElementById("flickrjsonApi");
var items = json.items.slice(0, 1);
for (var i = 0; i < items.length; i++) {
var item = items[i];
var a = document.createElement("a");
var img = document.createElement("img");
var media = item.media.m;
img.setAttribute("src", media);
a.setAttribute("href", item.link);
a.setAttribute("title", item.title);
a.appendChild(img);
div.appendChild(a);
}
}

■HTML

//ヘッダ
<script type="text/javascript" src="js/frickerJsonApi.js"></script>
//ボディ
<div id="flickrjsonApi"></div>
<script src="http://api.flickr.com/services/feeds/photos_public.gne?id=*****&set=*****&jsoncallback=flickrJsonAPI&format=json"
type="text/javascript" charset="utf-8"></script>

画像をオリジナルサイズで持ってきたかったので、JSでサイズを規定している

var media = item.media.m;

をreplaceで違うものに置き換えてやればいけるのでは、と

var media = item.media.m.replace(/_m.(jpg)$/, "_o.$1");

(※_oというのは「original image, either a jpg, gif or png, depending on source format」。http://www.flickr.com/services/api/misc.urls.html

…だけど権限だかなんだかのせいで、結局オリジナルサイズを取得することができなかった…。というか、frickerの仕組み的に画像ダウンロード(PCに保存)ができないっぽいんで、そもそもダメだった。

■多謝
http://www.metareal.org/2008/06/15/display-flickr-photos-on-your-website-using-json-feed-api/

Posted by inami at 04:26 AM
2010.05.03

[SCRIPThtml5 SVG

■多謝
http://ja.wikipedia.org/wiki/Scalable_Vector_Graphics

SVG(Scalable Vector Graphics)は、XMLによって記述されたベクターグラフィック言語のこと、あるいは、SVGで記述された画像フォーマットのこと。W3Cでオープン標準として勧告されている。

XMLで記述するため、Webブラウザ上で閲覧でき、テキストエディタなどで編集することができる。またハイパーリンクを画像中に埋め込んだり、JavaScriptなどと連携させることもできる。ベクターグラフィックであるため、ベクターデータによる画面表示では拡大や縮小をしても描写の劣化が起きない。画像データの画面表示はWebブラウザのプラグインによって色調補完を行ないドット落ちを補正する機能を持つものがある。

Posted by inami at 06:37 PM

[SCRIPThtml5 section

sectionタグ

・セクションで内容を明示的に区切る。idとかつけておけば分かりやすくなる。
・ブロック要素じゃない。ソース上でわかりやすくするだけ?
・区切ったらh1など何度でもつけられる。

■多謝
http://www.html5.jp/tag/elements/section.html

section 要素は、一般的なドキュメント・セクションやアプリケーション・セクションを表します。セクションとは、この文脈においては、コンテンツの主題をグループ化するものです。通常はヘッダーを、場合によってはフッターを伴います。

section 要素は、一般的なコンテナ要素ではありません。スタイリング目的やスクリプティングにとっての都合で要素が必要になったとき、ウェブ制作者は、代わりに、div 要素を使うことが推奨されます。一般的な規則として、section 要素は、その要素のコンテンツが明示的にドキュメントのアウトラインにリストされる場合にのみ適切だということです。

<article>
 <hgroup>
  <h1>Apples</h1>
  <h2>Tasty, delicious fruit!</h2>
 </hgroup>
 <p>The apple is the pomaceous fruit of the apple tree.</p>
 <section>
  <h1>Red Delicious</h1>
  <p>These bright red apples are the most common found in many
  supermarkets.</p>
 </section>
 <section>
  <h1>Granny Smith</h1>
  <p>These juicy, green apples make a great filling for
  apple pies.</p>
 </section>
</article>

section 要素を利用することで、ウェブ制作者はどこにでも h1 要素を使うことができるようになる点に注目してください。該当ののセクションが、トップ・レベルなのか、第2レベルなのか、第3レベルなのかどうかについて心配する必要はありません。

Posted by inami at 04:34 PM
2010.04.25

[SCRIPTAS3 : Linkage Object add ID

書き方を知らなかっただけなんですけど、リンケージオブジェクトをいくつも呼び出しつつ、それらにIDを振っておきたい時

var this["_his_obj" + i]:his_obj_mc = new his_obj_mc();
と書けない。
this["his_" + i] =new his_obj_mc();
と書く。

さらにこいつにID(変数)をつけたいとか思ったら
this["his_" + i]._ID = new Number();
this["his_" + i]._ID = 100;
とか。

newするってことを知っておこう。

Posted by inami at 05:50 PM

[SCRIPTAS2 : Spring Movement

バネ運動
勝手にリンクさせていただきました。

■多謝
http://100th.blog96.fc2.com/blog-entry-6.html

Posted by inami at 05:40 PM
2010.04.24

[SCRIPTAS3 : Remove Child Object

ADDとかLOADの子オブジェクトを消したい、これがややこしい。

「指定した DisplayObject は呼び出し元の子でなければなりません。」

だなんてエラーが出てくるのは
LOAD UNLOADでADDだのCONTAINERだの面倒くさいから

そういう時は
aaa.conteins(zzz)//aaaの中(子とか孫まで含んで)にzzzを含んでいるか
を調べてtrueならremoveする。

Posted by inami at 05:32 PM
2010.04.23

[SCRIPTAS3 : Z-index

オブジェクトの重なり順。一番手前にターゲットのMCを出す、なんて時。
コンテナの子要素をsetChildIndexで並べ替える。

■多謝
http://blog.bonkura.jp/2008/09/as30-13.html

コンテナにある表示オブジェクトの個数はDisplayObjectConatinerのnumChildrenプロパティで調べることができます。

setChildIndex()を使ってインスタンスの並びをこれより1少ないインデックス番号に直します。1少ないインデックスにしないと「指定したインデックスが境界外です」とのランタイムエラーが発生します。

ActionScript2.0との大きな違いは深度の概念が無くなったことです。ActionScript3.0では重なり順は深度ではなく、表示リストで操作することに注意してください。

Posted by inami at 05:24 PM
2010.04.22

[SCRIPTAS3 : Set Link to Flash TextField

外部XMLのニュースを読み込む。かつテキストにリンクがつく。(XML側でURLを明示しておく必要あり)

テキストフィールドに.textでなく.htmlTextで指定。

■多謝
http://hakuhin.jp/as3/text_field.html

Posted by inami at 05:14 PM
2010.04.21

[SCRIPTAS3 : Change Cursole

MCにCLICK等イベントを設定してもBUTTONじゃないから指カーソルにならない。
指カーソルにするには

_button_mc.buttonMode = true;
_button_mc.useHandCursor = true;

です。

Posted by inami at 05:09 PM
2010.04.20

[SCRIPTAS3 : Set bgImg to monitor size

モニタサイズやブラウザサイズにあわせて背景画像を拡大する時に、画像によって端が切れたりしないようにするには、縦・横どちらを基準に伸ばすかを設定するべし。横が長いときは横基準、縦が長いときは縦基準。

ちなみに現時点でのモニタのMAXは、下記と考えて妥当でしょう。
WQXGA(Wide-QXGA) MAC30インチ
2560×1600(16:10)
※2009年時点での一般的な市販ディスプレイの最大ピクセル数。これ以上のものは一部の特殊用途であり、一般的ではない。
http://ja.wikipedia.org/wiki/%E7%94%BB%E9%9D%A2%E8%A7%A3%E5%83%8F%E5%BA%A6

Posted by inami at 04:48 PM
2010.02.19

[SCRIPTFireworks Layer Lock

■多謝
http://119.245.215.115/blog/2008-12-11/163
http://www.kuma-de.com/blog/1-programming/1-javascript/2009-02-07/318

たぶんFireworksのCS3までは、ショートカットを使ってレイヤーのロック・アンロックができないので、コマンドというものを作ってメニューに登録してショートカットを割り当てるということをしないといけないらしい。

テキストエディタに記述。形式は.jsf

Program Fileの
Adobe\Adobe Fireworks CS3\Configuration\Commands
につっこむ

Fireworks起動

「コマンド」メニューに入ってるので、ショートカットを割り当て

ロック fw.getDocumentDOM().lockSelection();
アンロック var dom = fw.getDocumentDOM(); var currentLayer = dom.layers[dom.currentLayerNum]; for(var i = 0; i < currentLayer.elems.length; i++){ dom.setElementLocked(-1, -1, i, false, false, false); }

つーことで。

Posted by inami at 06:26 PM
2009.12.21

[SCRIPTAS3 : Run to the clicked point

クリックした位置に向かっていくキャラにつけたAS。

●多謝
http://www.adobe.com/jp/support/kb/ts/228/ts_228615_ja-jp.html
http://hakuhin.hp.infoseek.co.jp/main/as/math.html#MATH_00
http://www8.plala.or.jp/ap2/suugaku/sankakukansuunoshoho.html

Posted by inami at 03:01 AM
2009.12.20

[SCRIPTAS3 : SIN COS TAN

いつもわかんなくなるのでメモ

●多謝
http://hakuhin.hp.infoseek.co.jp/main/as/math.html#MATH_00
http://www.procreo.jp/tutorial03.html

2点でできる線の角度を求める。

rad = Math.atan2(目標のy座標 - 自分のy座標, 目標のx座標 - 自分のx座標);
角度 = (Math.PI / 180) * rad;

Posted by inami at 11:50 PM
2009.12.11

[SCRIPTAS3:KeyboardEvent

このイベントハンドラは、stage オブジェクト以外のインスタンスに登録したときはフォーカスを与えないと動作しません。

多謝
http://hakuhin.hp.infoseek.co.jp/main/as3/key_board.html#KEY_BOARD_0%EF%BC%93

Posted by inami at 05:38 PM
2009.12.10

[SCRIPTAS3 : Pass Time of Timer Class

TimerClassを使って
経過時間のミリ秒とかとれないのかなって思って調べたら
取れないのよね。
取れないというか工夫次第っていうか。

多謝
http://oshiete1.goo.ne.jp/qa4989338.html

要するに、5000ミリ秒1回のタイマーを、 50ミリ秒を100回、回すようにします。

他にもやり方はありますが、タイマー自体を監視する方法としては
これが一番シンプルな気がします。

なるほどねって。
これでcurrentCountに条件分岐とかつけてあげたら良いわけで。

ちなみにタイマーが動いているかどうかを知りたいときは

myTimer.running = (boolean);

ってことで。

たとえば、タイマーが動いているときはプレイボタンを効かないようにしたいじゃない。意味無いから。そんなときは

if(myTimer.running == true)
{
//動いている時は、ポーズボタンのみの記述
}
if(myTimer.running == false)
{
//止まっている時は、プレイボタンのみの記述
}

みたいな。

http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/utils/Timer.html

Posted by inami at 10:40 PM
2009.11.29

[SCRIPTAS3 : Start PaperVision 3D -Camera-

PV3D。カメラの話。

■多謝
http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_5/

■まずはカメラを動かすことを体験
デモはカメラの移動軌跡をトゥイーンライブラリのTweenerを使って、ベジェ曲線として動かすものです。
http://labs.zeh.com.br/blog/?p=104

また、カメラのプロパティ(xyzや、rotationXYZなど)のイメージをつかむには次の記事が参考になります。
http://www.y-tti.com/blog/2008/04/papervision3d_2.php

本記事ではカメラの動かし方を3分類に分け、それらを順を追って説明していきます。

* 自動回転型
* マウスの位置連動型
* マウスのドラッグ&ドロップ型

■パーティクル
よりリアリティーを出すために地球の周りを浮遊する隕石も作ってみました。これはPapervision3Dのパーティクル機能を作って再現しています。次のスクリプトは2000の幅を持った立方体の中に幅4のパーティクルを500個生成するというものです。

■カメラの種類
Papervision3Dのカメラには大きく2種類の制御方法があります。

* 常に一点を向き続けるターゲットカメラ
* カメラの視点を自由に設定できるフリーカメラ

今回は前者のターゲットカメラで試していきます。なおBasicViewの初期設定はターゲットカメラです。

■課題1 : 地球の周りをカメラを回転させる
カメラの座標の設定方法はcameraのx,y,zプロパティーに値を入れるだけです。カメラはターゲットカメラですので、常に1点を向き続けています。BasicViewでは特に設定しない限り原点(0,0,0)を向いてます。

動きの演出については、フレーム毎に衛星の配置角度を0.5度ずつ加算し、それをカメラの座標に変換しています。カメラの座標は三角関数(sinとcos)を使って、角度から求めています。1000という値は円の半径です。

エンターフレームのハンドラーの部分に次のスクリプトを記載。

■課題2 : マウスの座標に応じて回転させる
角度の算出方法をステージの幅の何%の位置にマウスがあるかを計算で求め、それを角度に反映。

■課題3 : マウスのドラッグに応じてカメラを制御する
マウスのドラッグ&ドロップでカメラの位置を制御できるようにしてみます。

ドラッグ&ドロップはマウスを押したとき・移動したとき・離したときの3パターンのイベントに分解できます。コアのロジックは、押したときのマウス座標から移動したときのそれとの差分を求めることです。求めた差分を角度に変換し(適当な0.25という値を乗算しています)、それをイージングの公式を用いて滑らかにし、それをカメラの座標に三角関数で設定しています。

■課題4 : ドラッグ&ドロップを上下左右対応に

Posted by inami at 06:35 PM

[SCRIPTAS3 : Start PaperVision 3D -BasicView-

またまたPV3D。Papervision3D(以下PV3D)というライブラリがどのようにして3Dを扱っているのか。

■多謝
http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_4/#more-1619
Yasuさんの記事は実例があるのでとってもわかりやすい。本当にありがたい。

■PV3Dで3Dを始めるときに必ず使う4つのクラス

* Scene:シーン
* Camera:カメラ
* Renderer:レンダラー
* Viewport:ビューポート

PV3Dにおける3DというのはすべてSceneという概念的な空間のなかに配置します。その概念的な空間を撮影するのがCamera。Cameraで撮影したものを2次元表示に落とし込むのがRenderer、そしてFlashに映し出すモニタがViewportとなります。

この仕組みはPV3Dでスクリプトで表現できますが、それは次のようなAction Scriptとなります。

ただし、これら一連の初期化はBasicViewクラスが担ってくれるので、上記スクリプトは本チュートリアルでは記述することはありません。

BisicViewは簡易的にPV3Dを初期化するものですが、決してパフォーマンスが落ちたりカスタマイズしにくいことはなく十分実用に耐えるクラスです。

■BisicView について
BasicViewはインスタンス化の際にPV3Dの初期化を全ておこないます。

↓各種プロパティーにアクセスするには次の記述をします。

↓PV3Dで扱う3Dオブジェクト、ライトはsceneプロパティーにaddChildすること表示させることができます。

■Sceneについて
PV3Dの3D座標軸について押さえておきます。3DではX,Y,Zの3つの座標を扱います。通常のFlashと違い注意する点としては、軸の方向が違うということです。

* X軸:左から右に向かって正
* Y軸:下から上に向かって正
* Z軸:手前から奥にむかって正

注意点としてPV3Dでは画面の中央(厳密にはViewportの中央)が原点(0,0,0)となります。

■Cameraについて
3D空間を撮影する機能をもったクラスが、Cameraとなります。Cameraの主な設定は以下となります。

* X,Y,Z座標:3D空間の配置する場所を設定
* focus : 焦点距離(値が小さいほど広角)
* zoom : ズーム(値が大きいほど拡大)

BasicViewにおけるCameraの初期設定は次のとおりです。

カメラの位置を調整するときは次のように記述します。

■BasicViewのレンダリング
3D空間にオブジェクトやカメラを設定しても、レンダリングしない限りはFlash上の画面には表示されません。レンダリングの設定方法ですが、以下の一行を一度だけ記述すると、ENTER_FRAMEの処理として自動レンダリングが設定されます。

レンダリングをストップさせたいときはstopRendering()を使います。

■BisicViewの初期設定
viewportの初期設定で、以下の設定が適用されます。

画面の表示モードは常に等倍で左上が原点に設定されます。3Dの表示は自動サイズとなります。つまり、3DがFlashの全面領域にフィットするように設定されるということです。

Posted by inami at 05:10 PM

[SCRIPTAS3 : Start PaperVision 3D -Material-

PV3Dその2。
お次はシェーディングというか、表面加工というか、とにかくマテリアルというらしい。

■多謝
http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_3/
http://www.xinterface.net/samples/MaterialsExplorer/Default.html

代表的なマテリアルを紹介してみます。

* WireframeMaterial : 3D形状のポリゴンメッシュ
* FlatShadeMaterial : 簡易的な陰影表示
* BitmapMaterial : 指定したビットマップ画像

Papervision3Dのオブジェクトの作成手順として(1)マテリアルを作成 (2)プリミティブオブジェクトを作成という2つの手順を踏むことになります。

■WireframeMaterialの実装方法
Papervision3Dの中で最も簡単なのがWireframeMaterialです。ポリゴンのワイヤーフレームを表示するもので、new WireframeMaterialの引数にワイヤーフレームの色を指定するだけです。

■FlatShadeMaterialの実装方法
WireframeMaterialと違って、FlatShadeMaterialではライトの陰影の機能を使う必要がでてきます。プリミティブオブジェクトに陰影をつけることをシェーディングと呼びますが、その場合の手順は(1) ライトを作成 (2)マテリアルを作成 (3) プリミティブオブジェクトを作成となります。

シェーディング(陰影)具合は下記に。
http://clockmaker.jp/blog/2008/07/papervision3d_shading/

■BitmapMaterialの実装方法
実はBitmapMaterialには様々な種類があり、使い方に応じて使用するクラス名が違ってきます。

* BitmapMaterial : BitmapDataを指定(上級者向け)
* BitmapAssetMaterial : Flash CS3/CS4上のライブラリの画像を指定
* BitmapFileMaterial : 外部画像を指定

画像の取り込み方法が違うだけで、結果は同じとなります。
以下はBitmapAssetMaterial。

まずは.flaファイル内に画像を取り込み、画像の「クラス」を設定します。
http://www.xinterface.net/samples/MaterialsExplorer/Default.htmlから画像をダウンロード。
ライブラリに取り込み、画像のプロパティを開いて「ActionScriptに書き出し」にチェック→クラス名を入力。今回は「EarthMap」とする。

Bitmap系Materialの兄弟でMovieAssetMaterialというものがあり、マテリアルにムービークリップを指定することもできます。例えばMovieClipのタイムラインアニメーションをマテリアルに指定することもできます。
Posted by inami at 12:53 AM
2009.11.28

[SCRIPTAS3 : Start PaperVision 3D

ペーパービジョンを勉強してみる。
以下、参考サイトをほぼコピペ。

■多謝
http://clockmaker.jp/blog/2009/04/papervision3d_tutorial_2/
http://clockmaker.jp/labs/090419_primitive_generator/bin/index.html

PV3D で扱えるオブジェクトは以下の 7 種類があります。

* Plane : 平面オブジェクト
* Sphere : 球面オブジェクト
* Cube : 立方体オブジェクト
* Cone : 3角コーン型のオブジェクト
* Cylinder : 円柱のオブジェクト
* PaperPlane : 紙飛行機のオブジェクト
* Arrow : 矢印のオブジェクト

それぞれのクラスファイルは org.papervision3d.objects.primitives パッケージに所属しているため利用するときは「 import org.papervision3d.objects.primitives.*; 」をアクションパネルに記述する必要があります。

それぞれのオブジェクトのパラメーターについて説明します。

* width : 横幅
* height : 高さ
* depth : Cubeにおける奥行き
* radius : 半径。Sphere では球体の半径で、ConeとCylinderでは底辺の半径。
* segmentsW : 横方向の分割数
* segmentsH : 縦方向の分割数

segments (セグメント)というパラメーターは 2D にはありませんので、見慣れないパラメーターだと思います。3D では表示オブジェクトをポリゴン化して表示させるのですが、セグメントというパラメーターは大雑把にいうとポリゴンの分割数となります。

セグメントを増やすと、球体( Sphere )ではより滑らかになると思いますが、セグメントの値を大きくするととたんに再生速度(フレームレート)が下がりますので注意が必要です。

Posted by inami at 11:51 PM
2009.11.01

[SCRIPTAS3 : Pass to Parent object

●子swfにアクセスする時
子swfのrootがLoaderクラスのcontentプロパティに格納されるのでこれを経由。以前のエントリに記述あり。

●子swfにアクセスから親swfにアクセスする時
最初のparentはLoaderクラスになるので、最低限root(子swfのroot).parent.parentという様に二つ階層を上る。呼び出す位置により、parentが深くなる。

■多謝
http://www.pandama.net/memo/2009/10/as3-swfswfswf.php

Posted by inami at 01:35 PM
2009.09.30

[SCRIPTAS3 : MouseCursole Change

マウスカーソルを変えると
なんだかイベントがきかなくなる件

多謝
http://www.dubfrog.net/blog/2008/12/as30-5.html

Posted by inami at 11:34 AM
2009.09.05

[SCRIPTAS3: Twitter on FLASH

Twitterの発言を取得するFLASHを趣味で。

色々ネットを徘徊すると
直でXML取得ができないから、PHPを咬ませるらしい。

【多謝】http://yoppa.org/rsd.php?itemid=691
PHP:crossdomain-proxy.php

こいつでTwitterを取得して
FLASHから叩く、と。

FL:1フレーム目に直書きの場合
※「twTx」はFLASH内のテキストエリア(ターゲット)名

Posted by inami at 12:08 PM
2009.08.29

[SCRIPTAS3 : target OldTypeSWF (AVM1Movie)

外部SWFがAS1or2製のときにAS3で制御できないというエラーが出るんですね。MovieClip形式に型変換できないでっせ。

ということで。

まず、SWFが作られたバージョンまで判別してるのかよ!という驚きがあって、次にじゃぁどうすればいいのさ、ってことで。瞬時に思いついた解決策としては、クライアントにちゃんとしたSWFをくれと頼むか、FLAファイルをもらってAS3形式で書き出し直すかなんですけど、まぁ締め切りが近くて難しいだろうなと思い、ネットを彷徨うと。

http://d.hatena.ne.jp/ActionScript/2009042/as3_illustrator_loader_swf
http://mogmet.blog20.fc2.com/blog-entry-11.html

なるほど裏ワザがあるのね!ということで早速ためしましたらできました!多謝。

外部AS:ForcibleLoader.as

で、

つーことで。

Posted by inami at 08:59 PM
2009.08.28

[SCRIPTAS3 : Garbage Collection

http://d.hatena.ne.jp/rakusai/20081221/1229828635
http://blogs.adobe.com/akamijo/archives/2007/05/post_19.html


■Flash AS3のガベージコレクションを攻略する4つのTips

弱い参照とは、たとえ存在していても、ガーベジコレクションの際に参照としてみなされない参照です。

これは大変便利で、イベントリスナにより生成される参照が全て弱い参照であれば、参照の方向とか気にせず登録したリスナを放置しておいて良いことになるからです。

都合の良いことに、イベントリスナの登録時に弱い参照を使うかどうかを指定することができます。addEventListener() の5 つ目の引数を true にすれば弱い参照が使われます。

addEventListener(”type”, listener, false, 0, true)
3 つ目と 4 つ目の引数は false と 0 を指定しておけば大抵問題ありませんので、上の形を覚えておけば大丈夫です (たぶん)。今後イベントリスナを登録する際はこれを使うように決めてしまうというのも結構お勧めかもしれません。

Posted by inami at 06:59 PM
2009.08.27

[SCRIPTAS3 : access XML property

XMLが childNode prop="aaa" として

aaaを取得したい場合

xml.childNode.@prop

@をつけるとのこと。

【参考】
http://blogs.adobe.com/akamijo/archives/2006/02/xml.html

Posted by inami at 04:33 PM

[SCRIPTAS3 : Mouse_EVENT???

http://harayu.com/2009/06/01_1339
http://itpro.nikkeibp.co.jp/article/COLUMN/20080416/299226/?ST=webdesign&P=2

よくわからなかったことがある

MCをmouse_eventのターゲットにしたら
null objectだと言われたのだが
evt.target.parent
つまりイベントターゲットの親にしたら
通った。

なんでだ?

mouse_eventは下につくのか?
それともこのMCに入ってたダミーのボタンインスタンスについたのか?

ようわからん。

Posted by inami at 03:12 PM

[SCRIPTAS3 : Loader or URLLoader

Loader クラスは、SWF ファイルまたはイメージ (JPG、PNG、または GIF) ファイルをロードするために使用します。ロードを開始するには load() メソッドを使用します。ロードされた表示オブジェクトはLoader オブジェクトの子として追加されます。

-----

URLLoader クラスは、指定した URL からテキスト、バイナリデータ、または URL エンコード形式の変数をダウンロードする際に使用します。動的なデータ駆動アプリケーションで使用するテキストファイル、XML、その他の情報をダウンロードする場合に便利です。

Posted by inami at 01:10 PM
2009.08.26

[SCRIPTAS3 : Loaded Object Action

読み込んだターゲットがSWFである場合に
アクションをつける

イベントのターゲットコンテンツを対象にするのか?

Posted by inami at 03:45 PM

[SCRIPTAS3 : Loaded Object Size

外部から読み込んだ画像とかの情報(状況)を監視。

contentloaderInfoをリスナー登録してcompleteした後でないと、読み込んだ画像のサイズなどの情報は取れない。

情報が取れないと、リサイズとか位置調整ができない。

Posted by inami at 01:30 PM
2008.12.18

[SCRIPTAS3 : Stage Resize

ステージリサイズ時のヤツ。

※パブリッシュのHTML設定でサイズを縦横100%にする。

Posted by inami at 03:51 PM

[SCRIPTAS3 : Centering

これも後でまとめよう。
画面中央寄せ。

【1】まず、そのFLASHステージの設定をする。

ちなみに設定できるのは以下、

●スケールモードを設定する
StageScaleMode.EXACT_FIT; 縦横比を変えてフィット
StageScaleMode.NO_BORDER; 縦横比を変えずにフィット
StageScaleMode.NO_SCALE; 100% 表示
StageScaleMode.SHOW_ALL; すべて表示

●整列位置を指定する
StageAlign.TOP_LEFT; 上 左
StageAlign.TOP; 中央
StageAlign.TOP_RIGHT; 上 右
StageAlign.LEFT; 中央 左
値なし 中央 中央
StageAlign.RIGHT; 中央 右
StageAlign.BOTTOM_LEFT; 下 左
StageAlign.BOTTOM; 下 中央
StageAlign.BOTTOM_RIGHT; 下 右

そんで、外部クラスは

クラスを呼び出すときは

です。

Posted by inami at 03:27 PM
2008.12.17

[SCRIPTAS3 : Grid Positioning

方眼配置。
あとでまとめよう。

Posted by inami at 09:05 PM

[SCRIPTAS3 : Pass to Loaded object

Loaderクラスで読み込んだ外部SWFは、Loaderクラスを経由(?)してるので、単純なターゲットパスを書けないみたい。AS2では読み込み先のターゲットMC名を指定すればいけたのに…。

以下、親から子を参照する時

loaderクラスのcontentをMovieClipにキャスト。よくわかんないけど「this.child_mc」みたいにthisをつけるとエラーになった。

Posted by inami at 08:50 PM

[SCRIPTAS3 : Loader Class vol.2

前回もやったけどLoaderクラス。
ローディングバーならばPROGRESSイベントでいける。ENTER_FRAME使おうと思いがち。

全容は下記。

ふーむ。

Posted by inami at 08:29 PM
2008.12.05

[SCRIPTAS3 : Var

それからいつも忘れるのは

カスタムクラスを呼び出す(インスタンスを作る)時にvarをつけること。いっつも、ほんとにいっつも忘れる。

Posted by inami at 06:04 PM

[SCRIPTAS3 : int uint Number

何度も分からなくなるので

int:正負の整数
uint:正の整数
Number:数字全般(少数含む)

だから

いい加減憶えろや。

Posted by inami at 02:53 PM
2008.12.04

[SCRIPTImport and Linkage

Progressionを勉強中。ことさら便利になったとは思わないが、ASをきちんと管理できて整理整頓されるので、なんだかデキル奴になった気分。

ところで、ダイナミックテキストを使ったMCをリンケージして、テキスト関連のパッケージをインポートしていないクラスを適用すると、型のエラーが出た。当たり前のようでいてよく分からないのは、実は拡張するクラスの元に既にテキスト関連のパッケージがインポートされているのと、されていないのがあるからだろうか。そこら辺が分かっていないと「あっちではOKなのに、なんでこっちはダメなのよ」って混乱が発生する。

…のだろうか?そんなことないだろう?う~ん、しばらくFLASHから離れてしまった者としては推測の域を出ない。詳しい人に教えてもらおう。

とりあえずダイナミックテキストを静止テキストにしたらエラーは消えた。

Posted by inami at 09:46 PM

[SCRIPTProgression : Note1

Index クラスはデフォルト状態で CastDocument クラスを継承しています。CastDocument クラスは、ドキュメントクラスとして必要となる様々な機能が追加された MovieClip クラスのサブクラスです。

---

HTML サイトでページを順々と巡っていくのと同じように、Progression™ ではシーンを巡回しながらコンテンツを閲覧させることになります。シーンを扱うには、SceneObject クラスを使用します。

IndexSceneにFeatureSceneを追加(記述)したとすると、構造的にはIndexSceneの下の階層にFeatureSceneを置いたことになる。従ってパスは/IndexScene/FeatureSceneとなる。

---

SceneEvent.INIT イベント
移動先として指定したシーンに到着した瞬間に発生

SceneEvent.GOTO イベント
現在のシーンから移動する瞬間に発生

SceneEvent.LOAD イベント
目的地のシーンが自身もしくは子シーンを示している場合、移動処理時に階層が変更された瞬間に発生

SceneEvent.UNLOAD イベント
目的地のシーンが親シーンを示している場合、移動処理時に階層が変更された瞬間に発生

---

オーバーライド (override)とは、スーパークラスで定義されたメソッドをサブクラスで定義しなおし、動作を上書きすることである。

---

コンストラクタで指定している CastButton クラスの sceneId プロパティが、ボタンがクリックされた際の移動先シーンとなります。この設定は特に必要がない限りはコンストラクタで行うようにしてください。

---

IndexクラスとIndexSceneクラスの違いは、Indexが全てを統括しているのに対して、IndexSceneはTOPページのみを管理している、ということか?

---

コマンドを設定する際通常のフォーマットとの最大の違いは
* 1 つの処理につき、インスタンスを 1 つ作成する。
* どのようなコマンドの場合にも、実行時には必ず execute() メソッドを使用する。
この 2 点になります。

イベント中に処理させるためには、SceneObject インスタンスの addCommand() メソッドにコマンドを登録。addCommand() 経由で登録されたコマンドは、イベントの流れに応じて自動的に実行されるので、execute() メソッドを実行する必要はありません。

---

addCommand() メソッドで登録したコマンドはイベント発生が完了した後にまとめて処理されるために、イベント内で通常の手続き通りに実行されている removeChild() メソッドの方が先に処理されてしまっていることが原因です。この問題を解決するためには removeChild() メソッド自体を、コマンド処理として設定してあげる必要があります。

このようにコマンドを , で区切って続けて登録することで、前のコマンド処理の終了を待った連続実行が可能になります。

---

大量のアニメーションを設定しようとすると、シーンイベントがコマンドだらけになってしまいます。設定したいアニメーションが表示オブジェクトに紐付いたモノであれば、その表示オブジェクト自体に設定してしまう方が設計としてもよりシンプルです。

表示オブジェクト自体にイベントフローと連動させたコマンド処理が設定できるようになるキャストオブジェクトについてご説明します。

CastEvent.CAST_ADDED イベント
キャストオブジェクトが AddChild コマンド、AddChildAt コマンド、AddChildAtAbove コマンド経由でディスプレイリストに追加された瞬間に発生

CastEvent.CAST_REMOVED イベント
キャストオブジェクトが RemoveChild コマンド、RemoveAllChildren コマンド経由でディスプレイリストから削除された瞬間に発生

Posted by inami at 02:22 PM
2008.04.22

[SCRIPTAS3:LoadMovie changes to Loader Class

AS3のロードムービーとアンロードムービーについて。
Loaderクラス使ってやります。Loaderクラスのインスタンスを指定コンテナの下にaddchildで子オブジェクトとして置いて、そいつにUrlRequestインスタンスで定義したURLをloadしたる。

ちなみにアンロードするときは、「前にロードしたヤツがあるか判定」→「あったらリムーブ」→「とどめにロードしたファイルをnull」してます。

【外部ファイル】ImgLoader.as

上を呼び出すときはタイムラインに

面倒くせぇ。

Posted by inami at 08:16 PM

[SCRIPTAS3 : Button Event

基本のきで、ボタンイベントの設定。面倒くさくなっとりまんな~。
AS3の基本的構造としてfunctionを作ってそいつを呼び出すってのが分かってきた。
呼び出すときはボタンとかをリスナーのイベントに登録しなきゃいかん。

Posted by inami at 08:11 PM
2008.04.19

[SCRIPTAS3 : setInterval changes to Timer Class

またもやAS3になって消えたアイツの話。setInterval君。
どうやらTimerクラスを使って同じ事を実現するらしい。

【多謝】
http://weblogs.macromedia.com/akamijo/archives/2006/04/index.cfm
http://tasii.com/pw/index.php?as30

以下のサンプルは、配列に書かれているのを順番にダイナミックテキストに表示させるヤツ。

何が面倒っていうと「型指定」だったりするんだけどね。タイマーで使う関数にはちゃんとevent:TimerEventって書かないといけない(のかな?)。

Posted by inami at 11:13 PM
2008.04.18

[SCRIPTAS3 : attachMovie changes to addChild

ついに来ましたAS3.0をやるときが...((((;゚Д゚)))

そんで今回は初めのステップとしてはアレなんですが
AS2.0で言うところのattachMovieをやらないといかんのです。
attachMovieって3.0からは廃止になったんですねぇ。

まぁ、それでは行ってみましょうか。

まずはシンボルをリンケージさせるところまでは一緒でした。

【基本クラス】flash.display.MovieClip
【(作成する拡張)クラス】hachiroFly

というクラス設定をしてから、タイムライン上に

と、書けばライブラリでリンケージしたシンボルをステージ上にAttachしてくれます。attachMovieじゃなくてaddChildだけどね。_x、_yじゃなくてx、yなんだね。といってもこの時点では2.0と大差ない。

もっとたくさんattach数を増やすのと、3.0といえばクラス、クラス化しましょうか。ということで

あとは元FLAのタイムラインからこのクラスを呼び出すのみ。

var hachiroFlys:Addcha = new Addcha(this);

Posted by inami at 05:25 PM
2008.04.14

[SCRIPTMOVIE : VOB to AVI

DVDを渡されて「編集してくれない?」なんて言われたら、まずデータ取り出さなきゃいかんでしょ。DVDの「~.VOB」ってのをよく我々がよく使う形式に変換しなきゃいかん。そこで↓のフリーウェアをDL。

MPG2JPG v5.40

結果、WMVは結構良いんだけど、AVIはファイルサイズが異常に重く再生もされなかった。何かいけなかったんだろうか?まぁ会社のPCはWINなので問題なしですが。多謝多謝。

と、思いきや

> VOBファイルをAVIにしたいならwindowsのアクセサリにある
> windowsムービーメーカーでできますよ。

との声(Jさん)。

やり方はまず「VOBの拡張子を強引にmpgに」「windowsムービーメーカーに取り込んで」「保存(NTSC/AVIだかで)」

...なんともはや。聞いた方が断然早かった件。でもコーデックが足りなかったので取り込めないじゃんか。

ということでまたもやフリーウェアの真空波動研で、どんなコーデックが必要かを調査。

ふむふむなるほど、mpeg2が足りないらしい。ただこのmpeg2コーデックは通常何か動画系ソフトを買ったりして付属で付いてきたりするもの。...動画系ねぇ、そりゃ欲しいけど...。とそんなあなたに朗報が!

GPL MPEG-1/2 Decoder

こいつフリーねー。入れるねー。実行するねー。はいコーデックはいったねー。
さらにどうやら音声系のAC3というのが必要そうなので、もちろんこいつもフリーウェアからGET!

http://ac3filter.net/

以上、色々取り込んでみた後、再度WINムービーメーカーを起動。映像ファイルをドロップ...読み込み...!いけたね!これでやっとVOBからAVIに変換できるようになったとさ。

Posted by inami at 08:21 PM
2008.04.07

[SCRIPTACTION : Cookie(JS) and AS

一度来たらオープニングはすっ飛ばしたい。有効期限はブラウザを閉じるまで。ただしSharedObjectではブラウザの終了を判定できないので、代わりにJSのクッキーを取得して判定させてみる。

多謝
http://www.tohoho-web.com/wwwcook.htm

●JavaScriptを用いる場合は次のようにします。

document.cookie = "NAME=値; expires=値; domain=値; path=値; secure";


NAME=XXX:
必須。好きな名前に好きな値を指定します。

expires=XXX:
クライアント側に記録される Cookie の有効期限を指定します。
タイムゾーンは必ず GMT で指定します。
省略するとブラウザを終了させるまでが有効期限となります。
過去の値を指定すると Cookie を削除します。

domain=XXX:
Cookie を発行する Webサーバーの名前を指定します。

path=XXX:
ここで指定したパス名にマッチするページを参照したときに、
ブラウザは保存しておいた Cookie情報をサーバーに送ります。
例えば、path=/tanaka と指定すると、
/tanaka にマッチするすべてのページに対して Cookie情報が送られます。
省略時は、Cookie を設定したページのパス名部になります。

secure:
これを記述しておくと、サーバーとの接続がセキュアである時のみ、
Cookie情報が送信されるようになります。

最も簡単な書き込みの例は次のようになります。これは、ブラウザが終了するまで有効で、設定したページと同じフォルダにある(もしくは下位層にある)ページに送信されます。


Set-Cookie: NAME=tanaka;

有効期限を指定すると次のようになります。ブラウザを終了しても、OS を再起動しても、有効期限までディスクに保存されています。


Set-Cookie: NAME=tanaka; Tue, 31-Dec-2030 23:59:59;

JavaScriptを用いてCookieの値を読みこむには、document.cookie の値を参照します。


alert(document.cookie);

-----

そんで結局どうなったかと言うと
HTMLにJSでファンクションを書きこみ


●JavaScript
<script type="text/javascript">
<!--
function getVisited(){
if(document.cookie != ""){
var visitedFlg = "on";
return visitedFlg;
//alert(visitedFlg);
}else{
document.cookie = "NAME=Coook";//クッキー書き込み
var visitedFlg = "off";
return visitedFlg;
//alert(visitedFlg);
}
}
//-->
</script>

↑のファンクションを↓のASで呼び出す


●Action Script
//-----クッキー(外部JS)と通信------
//External Interfaceクラス呼び出し。外部JSと通信できる
import flash.external.*;
//ExIクラスのcallメソッドでJSを呼び出し、戻り値を変数に代入
var visitedFlg:String = String(ExternalInterface.call("getVisited"));
//trace(visitedFlg);

if(visitedFlg == "on"){
//ムービーを飛ばす
//dammtxt.text = visitedFlg;
_global.jumpedFlg = 1;
this.gotoAndPlay("ttl");
}else{
this.play();
}


何故かgotoAndPlayが良い感じに動かないのは、他の何かが原因であろうと思いたい。

Posted by inami at 08:27 PM
2008.04.01

[SCRIPTACTION : SharedObject

FLASH版クッキーを実現するSharedObject。
値はFLASHPlayerのフォルダに格納されたような気がする。

参考(多謝):
http://www.1art.jp/flash/le/lesson41/lesson41.htm

SharedObjectインスタンスはコンストラクタ関数を使用して作成しません。新規ローカルに作成するためにはgetLocal()メソッドかgetRemote()メソッドを使用します。

SharedObjectのプロパティにはdataがあり、そのdataはSharedObjectのデータ容器となります。dataのプロパティを削除する場合はdelete演算子を使用すれば削除する事ができます。その他にプロパティにundefinedかnull の値を代入すると入っている値を除去する事が可能です。

//ローカルsharedObject作成
var myLocalSo:SharedObject = SharedObject.getLocal("flashcookie");
if(myLocalSo.data.flashcookie == 1){
	this.gotoAndStop(2);
}else{
	myLocalSo.data.flashcookie = 1;
	myLocalSo.flush();
}
Posted by inami at 02:18 PM
2008.03.27

[SCRIPTACTION : Make Under-Buttons Disable

ボタンが並んでいる上にサブウィンドウ風のやつが出るようにしたら、下にあったボタンたちがイキで押せちゃって困った。

そんな時は、サブウィンドウの矩形と同じサイズのダミーの透明ボタンをサブウィンドウの下に敷いて

//指カーソルにならないようにする
dummyBtn.useHandCursor = false;

にすれば下に並んだボタンは反応しないし、ダミーの透明ボタンで指カーソルになることもない。前まではいちいち下のボタンのイベントを削除(deleteあるいは_visible=false)していたんですが、これだったら楽チンですな。

Posted by inami at 12:57 PM
2008.03.26

[SCRIPTACTION : Max Letters

FLASHのテキストエリアの入力可能文字数を制限するには

テキストエリアのインスタンスをクリック→プロパティパネルの中央下の「最大文字数」で文字数を設定する

これだけ。便利~。

Posted by inami at 11:45 AM
2008.03.25

[SCRIPTACTION : FocusRect Off

フォームやボタンで
タブを押すと色つきの枠が出てしまうときは

mc._focusrect = false
フォーカス枠の表示をオフにする

mc._focusrect = true
フォーカス枠の表示をオンにする

でよろしく。

Posted by inami at 11:23 PM

[SCRIPTACTION : Event Class

コンポーネントイベントの処理 > イベントオブジェクトについて

●イベントオブジェクトについて
イベントオブジェクトは、ActionScript Object クラスのインスタンスです。
イベントに関する情報を含んだ次のプロパティがあります。

type
イベントの名前を示すストリングです。

target
イベントをブロードキャストしたコンポーネントインスタンスへの参照です。

この他のプロパティについては、「コンポーネント辞書」の各イベントのセクションに一覧されています。

イベントオブジェクトは、イベントがトリガされると自動的に生成され、リスナーオブジェクトのコールバック関数またはリスナー関数に渡されます。

関数内でイベントオブジェクトを使用すると、ブロードキャストされたイベントの名前や、イベントをブロードキャストしたコンポーネントのインスタンス名にアクセスできます。インスタンス名から、他のコンポーネントプロパティにアクセスすることもできます。

たとえば、次のコードでは evtObj イベントオブジェクトの target プロパティを使用して、myButton インスタンスの label プロパティにアクセスし、値を [出力] パネルに送ります。

var myButton:mx.controls.Button;
var listener:Object;

listener = new Object();

listener.click = function(evtObj){
trace("The " + evtObj.target.label + " button was clicked");
}
myButton.addEventListener("click", listener);

【後記】
targetっていうのはつまりリスナーを設定するインスタンス(myButton)のことなんだろうと思われる。

Posted by inami at 02:33 PM
2008.03.24

[SCRIPTACTION : Sound

サウンドクラスです。

多謝
http://oshige.com/flash/note/archives/2005/05/sound.html

メソッド 説明


Sound.attachSound()
リンケージされたサウンドをSoundオブジェクトに割り当る。

Sound.getBytesLoaded()
ロードされたサウンドのバイト数を返す。

Sound.getBytesTotal()
サウンドのサイズをバイト単位で返す。

Sound.getPan()
setPan()メソッドで設定された値を返す。

Sound.getTransform()
setTransform()メソッドで設定された値を返す。

Sound.getVolume()
setVolume()メソッドで設定された値を返す。

Sound.loadSound()
MP3ファイルをFlash Player内にロードする。

Sound.setPan()
サウンドの左右のバランスを設定する。

Sound.setTransform()
各スピーカーで再生する左右各チャンネルの値を設定する。

Sound.setVolume()
サウンドにボリュームレベルを設定する。

Sound.start()
サウンドの再生を開始する。

Sound.stop()
サウンドを停止する。


プロパティ 説明


Sound.duration
サウンドの継続時間を示すミリ秒数。

Sound.id3
MP3ファイルのメタデータにアクセスする。

Sound.position
現在再生しているサウンドの位置(ミリ秒数)。


イベントハンドラ 説明


Sound.onID3
MP3ファイルの新しいID3データが利用できるようになるたびに呼び出される。

Sound.onLoad
サウンドがロードされたとき。

Sound.onSoundComplete
サウンドの再生が完了したとき。


Posted by inami at 03:32 PM
2008.03.19

[SCRIPTACTION : FLVPlayback

FLV再生に関するエトセトラ。

尚FLVPlaybackクラスは
VideoPlayerクラスの上位ですから、そこんとこよろしく。

/*----------初期設定----------*/

import mx.video.*;

//外部FLVを読み込む
flv_player.contentPath = xxxMovie.xxxPass;

//ボリュームバーのコンポーネントをリンケージする
flv_player.volumeBar = volume_mc;


/*----------FLVPlaybackイベント設定----------*/

//FLVPlaybackリスナー用オブジェクトの作成
flv_listener = new Object();

//再生準備ができた時
flv_listener.ready = function()
{
//trace("ready");
//----ボタンをクリック可能に
play_btn_mc.thisBtnAble();//画面中央のPlayボタン
mute_btn_mc.thisBtnAble();//ミュートボタン
}

//再生状態に移行した時
flv_listener.playing = function()
{
//trace("playing");
//----表示変更
play_btn_mc.thisBtnDisable();//プレイボタン-非表示
}

//先頭に巻き戻した時
flv_listener.rewind = function()
{
//trace("rewind");
//----表示変更
play_btn_mc.thisBtnAble();//プレイボタン-表示
}

//リスナーオブジェクトを登録
flv_player.addEventListener( "ready" , flv_listener );
flv_player.addEventListener( "playing" , flv_listener );
flv_player.addEventListener( "rewind" , flv_listener );


設定できるプロパティは下記の通りでよろしく。


VideoPlayer.autoRewind
ブール値。true の場合は、再生が停止したときに、FLV ファイルを最初のフレームまで巻き戻します。

VideoPlayer.autoSize
ブール値。true の場合は、ビデオのサイズがソースのサイズに自動的に設定されます。

VideoPlayer.bufferTime
ビデオストリームの再生を開始するまでにメモリにバッファする時間を秒単位で指定する数値。

VideoPlayer.bytesLoaded
HTTP ダウンロードの進捗状況のバイト数を指定する数値。 読み取り専用。

VideoPlayer.bytesTotal
HTTP ダウンロードでダウンロードされた総バイト数を指定する数値。 読み取り専用。

VideoPlayer.connected
ブール値。FLV ファイルストリームが接続されているかどうかを示します。 読み取り専用。

VideoPlayer.height
ビデオの高さをピクセル単位で指定する数値。

VideoPlayer.idleTimeout
(再生が一時停止中または停止されているために発生する) アイドル状態である FCS 接続を終了するまでのミリ秒単位の時間。

VideoPlayer.isLive
ブール値。ビデオストリームがライブである場合に true になります。 HTTP ダウンロードには適用されません。

VideoPlayer.isRTMP
ブール値。FLV ファイルが FCS からのストリーミングの場合に true になります。 読み取り専用。

VideoPlayer.maintainAspectRatio
ブール値。true の場合は、ビデオの縦横比が維持されます。

VideoPlayer.metadata
onMetaData() コールバック関数の呼び出しで返されるメタデータ情報パケットであるオブジェクト。 読み取り専用。

VideoPlayer.ncMgr
INCManager を実装するクラスのインスタンスにアクセスするための INCManager オブジェクト。

VideoPlayer.playheadTime
現在の再生ヘッドの時間または位置を秒単位で示す数値。小数である場合があります。

VideoPlayer.playheadUpdateInterval
各 playheadUpdate イベント間の時間をミリ秒単位で示す数値。

VideoPlayer.progressInterval
progress イベントの発生する間隔をミリ秒単位で示す数値。

VideoPlayer.scaleX
水平方向の拡大/縮小率を指定する数値。

VideoPlayer.scaleY
垂直方向の拡大/縮小率を指定する数値。

VideoPlayer.state
コンポーネントの状態を指定するストリング。 load()、play()、stop()、pause() および seek() の各メソッドを使用して設定します。 読み取り専用。

VideoPlayer.stateResponsive
ブール値。現在の状態でコントロールを有効にできる状態 (応答状態) である場合に true になります。 読み取り専用。

VideoPlayer.totalTime
ビデオ再生時間の合計を表す数値。

VideoPlayer.transform
詳細なサウンド制御を提供するための Sound.setTransform() メソッドと Sound.getTransform() メソッドに直接アクセスするためのオブジェクト。

VideoPlayer.url
ロードした (またはロード中の) ストリームの URL を指定するストリング。

VideoPlayer.videoHeight
FLV ファイルの高さを指定する数値。

VideoPlayer.videoWidth
FLV ファイルの幅を指定する数値。

VideoPlayer.visible
ブール値。true の場合は、FLV ファイルを可視にします。

VideoPlayer.volume
ボリュームコントロール設定値を示す 0 ~ 100 の間の数値。

VideoPlayer.width
更新前にユーザーがボリュームバーハンドルを移動できる距離を指定する数値 (パーセンテージ)。

VideoPlayer.x
ビデオプレーヤーの水平方向のサイズをピクセル単位で指定する数値。

VideoPlayer.y
ビデオプレーヤーの垂直方向のサイズをピクセル単位で指定する数値。


イベントごとに色々設定できるので、そこんとこもよろしく。


VideoPlayer.close
タイムアウトまたは close() メソッドの呼び出しによりビデオストリームが閉じたときに送出されます。

VideoPlayer.complete
FLV ファイルの最後まで再生が完了したときに送出されます。

VideoPlayer.cuePoint
キューポイントに到達したときに送出されます。

VideoPlayer.metadataReceived
FLV ファイルメタデータに初めて到達したときに送出されます。

VideoPlayer.playheadUpdate
FLV ファイル再生中に 0.25 秒ごとに送出されます。

VideoPlayer.progress
load() メソッドを呼び出してから、すべてのバイトがロードされるまでの間またはネットワークエラーが発生するまでの間、0.25 秒ごとに送出されます。

VideoPlayer.ready
FLV ファイルがロードされ表示準備ができたときに送出されます。

VideoPlayer.resize
ビデオのサイズが変更されたときに送出されます。

VideoPlayer.rewind
seek() メソッドの呼び出しまたは自動巻き戻し操作の完了により、再生ヘッドの位置が後方に移動したときに送出されます。

VideoPlayer.stateChange
再生状態が変更されたときに送出されます。

Posted by inami at 12:05 PM
2008.03.17

[SCRIPTACTION : Setting random Colors

配列に入れた色をランダムに適用しようとしたら
setRGBが上手く動かなかったので、原因を調べてたら
配列に入れた16進数が10進数になってしまうことに気づいた。
だからセットするときにまた16進数に戻してやらなあかん。面倒くせっ。

ちなみに配列に入れなければ、0x------のままでも大丈夫なんだよな。
というか配列に入れた時点で、オブジェクトのタイプが違うってことなのかな?
toStringで数に戻してるのかな?

function setMyColors(){
	//色相を選ぶ
	//1:赤、2:青、3:黄、4:緑
	var colorRange:Number = Math.floor(Math.random()*4);
	
	//色の各配列(パネル7以外)
	if(colorRange == 1){//赤
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}else if(colorRange == 2){//青
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}else if(colorRange == 3){//黄
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}else if(colorRange == 4){//緑
		var colorAry:Array = [0xCC0000,0xFF3333,0xDD9999,0xEE9966,0xDC3210,0xF93919,0xC56558];
	}
	

//色をセットする(パネル7以外)
var colorsNum:Number = colorAry.length;
//
for(var i:Number=0; i<=colorsNum; i++){
//色を配置
this["panelC"+i].setColorName = colorAry.splice((Math.random()*colorAry.length),1);
//色オブジェクト設定
this["panelC"+i].colorObj = new Color(this["panelC"+i]);
this["panelC"+i].colorObj.setRGB(this["panelC"+i].setColorName.toString(16));
/*
//this["panelC"+i]._alpha = 0;
*/
}


//パネル7の色をセットする
if(colorRange == 1){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0xFF0000);
//panelC7._alpha = 0;
}else if(colorRange == 2){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0x0000FF);
//panelC7._alpha = 0;
}else if(colorRange == 3){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0xFFCC00);
//panelC7._alpha = 0;
}else if(colorRange == 4){
var colorObj7:Color = new Color(panelC7);
colorObj7.setRGB(0x00FF00);
//panelC7._alpha = 0;
}

}

setMyColors();

Posted by inami at 02:34 PM
2008.03.14

[SCRIPTACTION : Math

今度はMath

Math.abs() 絶対値を計算する。
Math.acos() アークコサインを計算する。
Math.asin() アークサインを計算する。
Math.atan() アークタンジェントを計算する。
Math.atan2() x 軸から点までの角度を計算する。
Math.ceil() 整数に切り上げる。
Math.cos() コサインを計算する。
Math.exp() 指数値を計算する。
Math.floor() 整数に切り捨てる。
Math.log() 自然対数を計算する。
Math.max() 2つの整数を比べ、大きい方を返す。
Math.min() 2つの整数を比較し、小さい方を返す。
Math.pow() xのy乗を計算する。
Math.random() 0.0~1.0の疑似乱数を返す。
Math.round() 整数に四捨五入する。
Math.sin() サインを計算する。
Math.sqrt() 平方根を計算する。
Math.tan() タンジェントを計算する。

プロパティ(定数) 説明
Math.E 自然対数の基数。
Math.LN2 2の自然対数。
Math.LOG2E eの基数。2の対数。
Math.LN2 10の自然対数。
Math.LOG10E eの基数。10の対数。
Math.PI 円周率。
Math.SQRT1_2 1/2の平方根の逆数。
Math.SQRT2 2の平方根。

Posted by inami at 07:10 PM
2008.03.12

[SCRIPTACTION : setInterval

今度はインターバルをまとめる。
引用ばかり、多謝。

--------------------

●一定時間刻みで繰り返す

setInterval()関数を使えばonEnterFrameイベントハンドラを使わずに繰り返しの処理を行うことができ、また、時計の秒針移動のように正確なタイミングで動きを制御したい場合やフレームレートとはまったく違うタイミングの繰り返し処理を行うこともできます。
たとえば次のステートメントを実行すると、myObjオブジェクトのmyMethod()メソッドを2秒間隔で呼び出すようになります。
intervalIDにはこのインターバルの設定をキャンセルするためのidが入ります。

intervalID = setInterval(myObj, "myMethod", 2000);

myMethod()メソッドの実行の際にパラメータを渡すこともできます。パラメータがv1, v2ならば次のように書きます。

intervalID = setInterval(myObj, "myMethod", 2000, v1, v2);

インターバルをキャンセルするには、clearInterval(intervalID)を実行します。intervalIDは、setInterval()を実行したときに戻ってくる値です。

clearInterval(intervalID);

例:
メインのタイムラインにmyMCインスタンスを作り、フレーム1に次のフレームアクションを書き込みます。このムービーをパブリッシュすると、myMCインスタンスのkaitenメソッドが2秒間隔で呼び出されるようになり、結果として2秒間隔で時を刻むように10度ずつ回転します。

フレームアクション:
//実行するイベントハンドラを設定する
myMC.kaiten = function(d:Number) {
	this._rotation += d;
};

//myMCインスタンスのkaitenメソッドを2秒間隔で実行
intervalID = setInterval(myMC, "kaiten", 2000, 10);

----------

●一定時間を待つ

インターバルは一定時間間隔で繰り返しの処理を行いたいときに威力を発揮する機能ですが、一定時間を待つタイマーとしても利用できます。
次のサンプルを実行すると5秒後にインターバルで設定したtimeoutイベントが発生するので、そこでインターバルの設定をクリアします。

フレームアクション:
//timerObjオブジェクトの設定
timerObj = new Object();
timerObj.timeout = function() {
	clearInterval(timerID); // インターバルの終了
	trace("タイムアウト"); // 出力→ タイムアウト
};
//計測開始(5秒でタイムアウト)
var timerID = setInterval(timerObj, "timeout", 5000);
Posted by inami at 11:53 AM

[SCRIPTACTION : Array

めんどうだから
配列に関してまとめる。
といっても、引用多し。多謝。

--------------------

■多次元配列
配列の中に配列を入れた多次元配列を作ることができます。
多次元配列は複雑なデータを操作する上で有効な手段となります。多次元配列から要素を取り出す例を見てください。

例:
var colorlist:Array = [["red", "pink"], ["wihte", "blue"], ["green", "black"]]
var myColor:String = colorlist [2][1]; // "black"が入ります。

----------

■配列の値を操作するメソッドとプロパティ
配列の値(エレメント)の個数を調べる、値を追加する、値を削除する、並びを変更するといった操作は、Arrayクラスのメソッドとプロパティを利用します。値の位置は0から数えるので注意してください。

Arrayクラスのメソッドとプロパティ
Array.concat() 配列を連結し、新しい配列として返します。
Array.join() 配列の値を指定のセパレータで結合したストリングを返します。
Array.pop() 配列の最後の値を削除し、削除した値を返します。
Array.push() 配列の最後に値を追加し、配列の値の個数を返します。
Array.reverse() 配列の並びを逆にします。
Array.shift() 配列の最初の値を削除し、削除した値を返します。
Array.slice() 配列の要素を抽出し、新しい配列として返します。
Array.sort() 配列をソートします。
Array.sortOn() 配列内のフィールドに基づいて配列をソートします。
Array.splice() 配列の指定位置に値を挿入・削除し、削除された値を返します。
Array.toString() 値に相当するストリングを返します。
Array.unshift() 値を配列の最初に追加し、配列の新しい長さを返します。
Array.length 値の個数を返します。

例:配列の結合
var aList:Array = [3, 5];
var bList:Array = [9, 8];
var cList:Array = [33, 56];
var x:Array = aList.concat(bList, cList); // [3,5,9,8,33,56]

例:指定位置の値の削除と置き換え
var aList:Array = ["a", "b", "c", "d", "e"];
var bList:Array = ["a", "b", "c", "d"];
aList.splice(1, 3); // 位置1から3個を削除する→["a","e"]
bList.splice(1, 2, "x", "y"); // 位置1から2個を置き換える→["a","x","y","d"]

例:値のソート
var myList:Array = [3, 6, 4, 9, 1];
myList.sort(); // 昇順に並べる→[1,3,4,6,9]
myList.sort(Array.DESCENDING); // 降順に並べる→[9,6,4,3,1]

----------

●{}を使った配列オブジェクト

{}を使った配列オブジェクトは、名前と値という組み合わせでデータを管理するいわゆる連想配列に相当する機能です。
これはプロパティ名とその値という考え方で、書式は{識別子1:値1, 識別子2:値2, 識別子3:値3, ...}のようになります。データ型はObject型です。

例:配列オブジェクトを作る
var goods:Object = {id:"se24", price:1980, size:"M"};
var shoeData:Object = {color:"blue", size:23.5};

配列オブジェクトの値には、インスタンスのプロパティを参照する場合と同じく、ドット演算子(.)または配列演算子([])を使って参照します。

例:配列オブジェクトから値を取り出す
var theColor:String = shoeData.color;
var theSize:Number = shoeData["size"];

配列オブジェクトの値を変更したい場合にもドット演算子(.)または配列演算子([])を使って参照します。

例:配列オブジェクトの値を変更する
shoeData.color = "green";
shoeData["size"] = 24;

----------

●配列を走査する(for~in)

配列や配列オブジェクトのプロパティ名や値を順に調べたい(走査したい)ときにはfor~inが利用できます。変数には、配列の場合には位置が取り出され、オブジェクトの場合にはプロパティ名が取り出されます。

「配列から位置を順に取り出す」
for ( 変数 in 配列){
	// 繰り返すスクリプト
}

「配列オブジェクトからプロパティ名を順に取り出す」
for ( 変数 in 配列オブジェクト){
// 繰り返すスクリプト
}


例:配列の値を調べる
var colors:Array = ["red", "blue", "green", "yellow", "pink"];
for (var pn in colors) {
trace(pn + "=" + colors[pn]);
}

出力結果:
4=pink
3=yellow
2=green
1=blue
0=red


例:配列オブジェクトのプロパティ名と値を調べる
var goods:Object = {id:"sd91", name:"fix7", price:2500, volume:1};
for (var pn in goods) {
trace(pn + "=" + goods[pn]);
}

出力結果:
id=sd91
name=fix7
price=2500
volume=1

Posted by inami at 11:29 AM
2008.03.11

[SCRIPTACTION : Bound

バウンドするスクリプト

●ASバージョン
2.0

外部クラス
boyonboyon.as

class boyonboyon{

//プロパティ-----

var myMc:MovieClip;


//コンストラクタ-----
function boyonboyon(tgtMc:MovieClip){
myMc = tgtMc;
}


//メソッド------
/*
var firstY:Number;//初期位置Y
var tgtY:Number;//落下位置Y
var baseSpeed:Number;//基本落下速度
var accel:Number;//落下加速度
var k:Number;//跳ね返り減速度
var bounds:Number;//はねる回数
*/
function myBound(firstY:Number,tgtY:Number,baseSpeed:Number,accel:Number,k:Number,bounds:Number){
myMc._y = firstY;
myMc.onEnterFrame=function(){
this._y += baseSpeed;
//
if(this._y >= tgtY){
if(baseSpeed > 0){
if(bounds == 0){
this._y = tgtY;
delete this.onEnterFrame;
}else{
bounds--;
}
baseSpeed = -baseSpeed;
baseSpeed *= k;
}
}else{
baseSpeed += accel;
}
}
}
};

上を呼び出すとき

//クラスを呼び出す
var myBoyonBoyon:boyonboyon = new boyonboyon(this);

//メソッド実行(初期位置Y、落下位置Y、基本落下速度、落下加速度、跳ね返り減速度、はねる回数)
myBoyonBoyon.myBound(-200,150,6,6,0.6,4);


Posted by inami at 05:30 PM
2008.03.10

[SCRIPTACTION : Complecated Buttons

2つ前のエントリーの外部ASは
ボタンに関する判定とかがだいぶダメだったので
結局こうなった。

ずっと悩んでいたんだけど
フロー図を手書きしたら
30くらいでプログラムできた。
デザイナーのプラグラムなんてそんなもんだろ?な?な?...

/*
stage_mc > contentsSet_mc > 
*/


class classes.contents.Contents5MC extends classes.contents.ContentsMC
{
//public var myID:Number;

//--------プロパティ
var myMc:MovieClip;
var nowFlag:Number = 0;
var posters:MovieClip;
var postMask:MovieClip;
var prePoster:String;


//--------コンストラクタ
function Contents5MC( )
{
//ポスター初期設定実行
this.myPoster();
//ボタン設定実行
judgeMyBtn();
};


//--------メソッド

//ポスター初期設定
function myPoster()
{
for(var i:Number =0;i<=3;i++){
this.posters["post"+i]._x = 1;
this.posters["post"+i]._y = 1;
}
}

//ボタン管理
function judgeMyBtn(){
for(var i:Number=0;i<=3;i++){

//前提
var mcName:String = "thum"+i;
//サムネ番号とフラグ番号を判定
if(i == nowFlag){
//同じならイベントを消す
this.deleteMyBtn(i);
}else{
//違うならイベントを設定
this.setMyBtn(i);
}

}
}


//
function setMyBtn(myNum:Number){
//定義
myMc = this["thum"+myNum];
myMc.mcNum = myNum;
myMc.postName = "post"+myNum;

//まず、ON状態なら戻す
if(myMc.currentFrame>=3){
myMc.gotoAndStop("off");
}

//イベント設定
myMc.onRollOver = function(){
this.gotoAndStop("on");
}
myMc.onRollOut = function(){
this.gotoAndStop("off");
}
myMc.onRelease = function(){
//深度を変える
_parent.posters[this.postName].swapDepths(10);
_parent.prePoster.swapDepths(9);
//マスクセット
_parent.posters[this.postName].setMask(null);
_parent.posters[this.postName].setMask(_parent.posters.postMask);
_parent.posters.postMask.gotoAndPlay(2);
//フラグを変える
_parent.prePoster = _parent.posters[this.postName];
_parent.nowFlag = this.mcNum;
//再判定
_parent.judgeMyBtn();
}
}


//
function deleteMyBtn(myNum:Number){
//定義
myMc = this["thum"+myNum];

//まず、OFF状態ならONに
if(myMc.currentFrame<=2){
myMc.gotoAndStop("on");
}

//イベント削除
delete myMc.onRollOver;
delete myMc.onRollOut;
delete myMc.onRelease;
}

}

Posted by inami at 10:52 PM

[SCRIPTACTION : Set Mask

セットマスクを面倒だからまとめておく

●ASバージョン
2.0

-----
次の例では、ムービークリップ theMaskee_mc をムービークリップ circleMask_mc のマスクとして使用します。


theMaskee_mc.setMask(circleMask_mc);

ムービークリップを含むマスクレイヤーを作成してから、それに setMask() メソッドを適用すると、setMask() の呼び出しが優先され、元に戻すことはできません。たとえば、マスクレイヤー内のムービークリップ UIMaskee をマスクする別のレイヤーの別のムービークリップ UIMask があるとします。

UIMask.setMask(UIMaskee)

を呼び出すと、その時点から UIMask は UIMaskee によってマスクされます。

ActionScript で作成したマスクをキャンセルするには、setMask() に null を渡します。次のコードでは、タイムラインのマスクレイヤーに影響を与えずにマスクをキャンセルします。

UIMask.setMask(null);

-----
とのこと。

Posted by inami at 05:29 PM

[SCRIPTACTION : About set point of External AS

●ASバージョン
2.0

●テーマ
ASファイルに記述したときの注意点
・ASの階層構造
・プロパティでMCをMCとして定義しなきゃいかん。

-----

例えば外部ASに
対象とするMCを

class classes.XXX.AAA
{
 //AAA記述
 var hunhun:Number = 100;
}

としたら、
そのAAA(MC)の1フレーム目に
//AAA記述
があると考えて良いようだ。

そういう意味では、このAAA内のメソッドに例えば

this(AAAのこと).BBB.onEntarFrame = function()
{
 //BBB用の記述
}

と書いたならば、この
//BBB用の記述
から見て
//AAA記述
は_parentにあたるというわけ。

参照するには
this.BBB.onEntarFrame = function()
{
 //BBB用の記述
 marude = _parent.hunhun;
}

というわけ。
ASの概念の構造もMCの構造に同じというわけ。

外部ASにこれを書いてた。
fadeSpeedを参照する時に_parentとか使ってるあたりにご注目。

あと、プロパティで
var boxs:MovieClip;
としているんですが、[]やなんかで囲えない場合は
ちゃんと「それはMCですよ」って言ってあげないといけないみたい。

class classes.XXX.AAA extends classes.XXX.SSS
{

//プロパティ
var boxs:MovieClip;
var fadeSpeed:Number = 12;

//コンストラクタ
function Contents5MC( )
{
//ボックス初期設定実行
this.myBox();
//ボタン設定実行
this.myBtn();
};


//メソッド

//ボックス初期設定
function myBox()
{
for(var i:Number =0;i<=3;i++){
this.boxs["post"+i]._x = 1;
this.boxs["post"+i]._y = 1;
}
}

//ボタン設定
function myBtn()
{
for(var i:Number =0;i<=3;i++){
//初期設定
//trace(this["thum"+i].waku);

//ロールオーバー
this["thum"+i].onRollOver = function()
{
this.gotoAndStop("on");
_parent.myFadeIn(this.waku);
}

//ロールアウト
this["thum"+i].onRollOut = function()
{
this.gotoAndStop("off");
_parent.myFadeOut(this.waku);
}
}
};

function myFadeIn(mc:MovieClip)
{
mc._alpha = 0;
mc.onEnterFrame = function()
{
if(this._alpha >= 100)
{
this._alpha = 100;
this.onEnterFrame = null;
}
else
{
this._alpha += _parent._parent.fadeSpeed;
}
}
}

function myFadeOut(mc:MovieClip)
{
mc._alpha = 100;
mc.onEnterFrame = function()
{
if(this._alpha <= 0)
{
this._alpha = 0;
this.onEnterFrame = null;
}
else
{
this._alpha -= _parent._parent.fadeSpeed;
}
}
}

}

Posted by inami at 03:53 PM
2008.03.09

[SCRIPTACTION : Read a External XML

FLASHに外部XMLを読み込む。

●ASバージョン
2.0

●用意するもの
XMLファイル

今回は商品に対するコメントををFLASHで表示させる
という想定。

まずXMLファイル

・comment.xml

を用意したら、
次にFLASHにはXML読み込み用の下記AS

this.stop();

//XMLロード
//ファイル名
loadXmlname = "comment.xml";

//XMLload開始
myXML = new XML();

XML.prototype.ignoreWhite = true;//空白無視

//load後の処理
myXML.onLoad = xmlLoaded;

//ファイルLoad
myXML.load(loadXmlname);

//
function xmlLoaded(success) {
//
rootNode = myXML.firstChild;
//子子ノードの全数
_global.nodeNum = rootNode.childNodes.length;
//trace(nodeNum);
//グローバルに格納用のオブジェクトを生成し、値を入れる
for (var i=0; i<_global.nodeNum; i++) {
_global["items"+i] = new Object();
//item name
_global["items"+i].itemName = rootNode.childNodes[i].attributes["itemName"];
//item link URL
_global["items"+i].itemUrl = rootNode.childNodes[i].attributes["itemUrl"];
//comment
_global["items"+i].itemComment = rootNode.childNodes[i].attributes["itemComment"];
//image
_global["items"+i].itemImage = rootNode.childNodes[i].attributes["itemImage"];
//trace(_global["items"+i].itemName);
}
}

そんでもって、お次は
表示用MCに先ほど読み込んだXMLを引っ張ってこさせる

for(i=0;i<=_global.nodeNum;i++){
	var myName:MovieClip = this["huki"+i+"_mv"];
	//画像
	this["huki"+i+"_mv"].thum.loadMovie(_global["items"+i].itemImage);
	//アイテム名
	myName.itemName.html = true;
	myName.itemName.htmlText = "<b><u>"+_global["items"+i].itemName+"</u></b>";
	//URL
	myName.itemUrl = _global["items"+i].itemUrl;
	myName.onRelease = function(){
		//アイテム詳細URL
		getURL(this.itemUrl);
	}
	//コメント
	myName.itemComment.text = _global["items"+i].itemComment;
}

こんな感じで、よろしく。

Posted by inami at 04:27 PM
2008.01.11

[SCRIPTACTION : FadeIn, FadeOut

よく使うフェードイン・アウトの設定を_rootにFunctionで囲って置いておく。

●メモ
個人的によく使うものをまとめたを共有ファンクションと名づけている。今回は_rootに置いているが、他の制作でも使うようならば外部ASクラスにしておくと良い。


●インスタンス構成
_rootとそこに配置された何かのインスタンス(something_mc)があるとする。


●以下より、ActionScript

//----->_rootの1フレーム目-----


/*----------共有ファンクション----------*/

//----自分(myMc)をフェードインする
function myFadeIn (myMc:MovieClip)
{
//画面から消えてたら(_visible)表示
myMc._visible = true;
//透明度初期化
myMc._alpha = 0;
//スピード設定
var fiSpeed:Number = 5;
//実行
myMc.onEnterFrame = function()
{
if(this._alpha > 100)
{
this.alpha = 100;
this.onEnterFrame = null;
}
else
{
//徐々に見せる
this._alpha += fiSpeed;
}
}
}

//----自分(myMc)をフェードアウトする
function myFadeOut(myMc:MovieClip)
{
//スピード設定
var foSpeed:Number = 10;
//実行
myMc.onEnterFrame = function()
{
if(this._alpha < 0)
{
//
this.alpha = 0;
//画面から消す
this._visible = false;
//
this.onEnterFrame = null;
}
else
{
//徐々に消す
this._alpha -= foSpeed;
}
}
}


//----->_root.something_mcの1フレーム目に指示を出すスクリプト-----


//----自分(this)をフェードインさせる時
_parent.myFadeIn(this);

//----自分(this)をフェードアウトさせる時
_parent.myFadeOut(this);

Posted by inami at 01:01 PM

[SCRIPTACTION : Now Loading

ローディングバーのASメモ。

●メモ
下記は、一般的なswfのローディングであり、他にロードにはmovieClipLoaderというクラスを使うやり方がある。外部ファイル(jpegとか)を読み込む際にはそちらを使うべし(別途エントリにて)


●インスタンス構成
_root.loader_mc内にバー用のloadingBarというインスタンスがある。


●以下より、ActionScript

//----->_root.loader_mcの1フレーム目-----

this.stop();


//-----初期設定
//総バイト数
var bytesTTL:Number = _parent.getBytesTotal();

//ローディングバー関連
var barDefaultWidth:Number = 150;//デフォルトの横幅は150px
this.loadingBar._width = 1;//ロード直後に幅を1xpに


//-----ローディング
this.loadingBar.onEnterFrame = function ()
{
//ロード済みバイト数
var bytesLDD:Number = _parent.getBytesLoaded();
//ロード率
var loadRatio:Number = bytesLDD/bytesTTL;
//実行
if(loadRatio >= 1)
{
//バー幅固定
this._width = barDefaultWidth;
//共有ファンクションmyFadeOutでローダーを消す(※別途エントリにて)
_parent.myFadeOut(this._parent);
_parent.play();
//ローダーが消え始めたらonEnterFrameを終わる
if(this._parent._alpha < 100)
{
this.onEnterFrame = null;
}
}
else
{
//バー幅を伸ばす
this._width = Math.floor(barDefaultWidth*loadRatio);
}
}

Posted by inami at 12:17 PM
CopyRight© ´MNGN.COM´. All Rights Reserved.