画像をランダムに読み込む その2 2


前にアクションスクリプト2で作ってみたランダム読み込み
http://www.sakaiden.com/?p=2438

AS3に着替えてから、動かなくなってしまったので
ぜーんぶ作り直し

今回はクラスで作ってみる
手法は、前と変わらず
ごくごく単純な(それしか出来ない)方法でやるぞー

こんな感じ
パスとかを設定する

Math.randomを利用して画像の名前の連番部分を変える

それで読み込む

重要なのはこのランダム
AS2と違ってAS3ではrandom()が使えないので、Math.Random()を利用するぞ

ただし、Math.Random()は実数がでてそのまま使えないので
こんな事をする

[as3]

//Math.floorはもっとも近い自然数
//Math.randomとの使い方は、{ Math.random()*( 最大値-最小値+1 ) } + 最小値
//100回乱数を書き出してみる
var maxVal = 20;
var minVal = 0;
for(var i=0; i < 1000; i++){
 
trace(
   Math.floor(
      ( Math.random()*(maxVal-minVal+1) ) + minVal
    )//end floor
);//end trace

};//for end

[/as3]

コメントにあるとおりに、Math.randomで数字をだしたあとMath.floorで自然数に直す

という事で、
早速イメージをランダムで読み込むクラスを作った
こんな感じ、大丈夫かな・・・・

[as3]

package sakaiden
{
///////////////////////////////////////////////////
//必要なクラスを取得しておく
//なんだかいつも適当
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.system.LoaderContext;

import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
 ///////////////////////////////////////////////////
 //次にクラス
 //これはムービークリップのサブクラス
 public class SkdRandomImg extends MovieClip
 {
  ///////////////////////////////////////////////////
  //コンストラクタ
  //
  //引数は、ファイルまでのURL(パス)、イメージ名、イメージ種類、イメージ数
  //イメージは0番以上から
  //例、image0.jpgなどなど
  //
  //
  public function SkdRandomImg(in_passStr:String = “http:///”, in_nameStr:String = “image”, in_imgType:String = “jpg”, in_imageNum:Number = 1)
  {
   //引数から代入
   //イメージまでのパスをつくる、まずは変数
   var num = Math.floor( ( Math.random() * in_imageNum – 0 +1 ) + 0 );
   
   //パスを作る部分
   urlStr = in_passStr + in_nameStr + num + “.” + in_imgType;
   
   //ちょっと確認
   trace(“読み込む画像は  “+urlStr+”  なのさ”);
   
  };//constructor end
  
  ///////////////////////////////////////////////////
  //プロパティを設定
  private var urlStr:String;  
  ///////////////////////////////////////////////////
  //メソッド  
  ///////////////////////////////////////////////////
  //実際に読み込みを行う
  //
  public function loadImage():Loader
  {
   //まずはローダーを作って格納
   var loader:Loader = new Loader();
   
            // Loaderコンテキストを準備しておく
   //よくわからんがあったほうがいいみたい、クロスドメイン対策だそうだ
            var context:LoaderContext = new LoaderContext(true);
   
   //いざ読み込み
   loader.load(new URLRequest(urlStr));
   
   //読み込んだ物を返してあげる
   return loader;
  };//fn end

 };//public end
};//class end

[/as3]

サンプルは記事の下部からどうぞ~~

実はコンテキストのあたりはよく調べてない
クロスドメイン対策だそうだよ
一応動いてるから大丈夫だとおもう

今回はもう一個、ローディングの基本的な処理を入れてみるぞー
ローディングするぞー!

いつも通りネットで探したよ

●前に見つけたアドビにあったローディング処理
なんで、こう素直な凡例が無いのかな・・・・
個人的な事だけど、凡例はシンプルな方が勉強になると思うのだが。。。

http://community.adobe.com/help/search.html?q=AS3%20load&hl=ja_JP&lr=ja_JP&l=flash_product_adobelr

●英語のページで分かりづらいが
要約すると、AS1やAS2の.loadMovie()などの方法を
AS3に置き換えるとloaderクラスになるよといった感じで
その凡例とチュートリアルの紹介がされてます。よーく読むと分かりやすくかかれています。

http://www.republicofcode.com/tutorials/flash/as3loader/

特に凡例が非常にシンプルですばらしいです。
ページ下部には、標準のコンポーネントを使ったチュートリアルもあったぞ。
なので、こちらを参考にさせていただきました。Thanks!

ということで
まずは、ローディングする
ローディングしている間は、処理中のバーのアニメ
ローディング後にフェードアニメをする様にしてみる

フェードアニメを加えるといっても、
ボタンの時の様にタイムライン上のアニメを利用する
ローディング中と後のフレームを区別するだけさ

読み込み先はあらかじめ空のムービーインスタンスを作っておいて
そこに読み込む。

アニメーションは、フレーム上で作った物なので
どんなものでもOKさ

この際に、スクリプト側では、インスタンスまで相対で書いているのだけど
パブリッシュ設定のインスタンスの自動宣言にチェックが入っていないと
未定義と扱われてしまいエラーが起きる

注意が必要さね

まぁ、四の五の言わずにサンプルを
良い感じに改造して使えば良いんじゃないかな?
FlashCS4のファイルだよ

 
ダウンロード:ランダムで画像を読み込むアレ

うひー
よし、あとは

ツイッターにリベンジだ
AS3だから、今度は失敗しないぞ・・・・たぶん。。。。


Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

2 thoughts on “画像をランダムに読み込む その2