トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     xmlデータ読み込みとTimerクラスでの切り替え
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
igaito
Åê¹ÆNo.44254
投稿日時: 2010-1-8 16:16
新米
居住地: 九州
投稿: 7
使用環境:
xmlデータ読み込みとTimerクラスでの切り替え
JPEGのファイルを外部XMLファイルを使って読み込み、一定の秒数で
そのJPEGが切り替わるフォトアルバムみたいなものを作っています。

XMLデータの読み込みとJPEGの表示まではなんとか、できたのですが
一定の秒数で切り替える部分がうまくいきません。

以下が、現状のソースです。

XMLloader.as
package
{
import fl.motion.MotionEvent;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.display.*;
import flash.utils.Timer;

public class XMLloader extends Sprite {
//プロパティ
private var urlLoader:URLLoader;
private var xml:XML;
private var max:uint;
private var dataList:Array;
private var imgLoader:Loader;
private var container:Sprite;
private var imgLink:String;
private var imgPath:String;
private var minutetimer:Timer;

//コンストラクタ
public function XMLloader() {
init();
}

//XML読み込み
private function init() {
//URLLoaderオブジェクトの作成
urlLoader = new URLLoader();
urlLoader.load(new URLRequest("xml/imgload.xml"));//xmlファイルをロード

//XMLデータ読み込み完了イベント作成
urlLoader.addEventListener(Event.COMPLETE, completeLietener);

dataList = []; //Arrayの初期化

imgLink = new String(); //Element<link>
imgPath = new String(); //Element<path>

//タイマー作成
minutetimer = new Timer(3000, 0);
//タイマーイベント作成
minutetimer.addEventListener(TimerEvent.TIMER, onTick);
//スタート
minutetimer.start();

imgLoader = new Loader(); //Loaderオブジェクトを作成
container = new Sprite(); //Spriteオブジェクトを作成
addChild(container); //addChildで追加
//ロード完了イベント
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);

//マウスイベント
container.addEventListener(MouseEvent.CLICK, onClick);
container.addEventListener(MouseEvent.MOUSE_OVER, onOver);
container.addEventListener(MouseEvent.MOUSE_OUT, onOut);
}

//XML読み込み完了後
private function completeLietener(e:Event):void {
//XMLオブジェクトの作成
xml = new XML(e.target.data);
max = xml.item.length();

for (var i:uint = 0; i < max; i++) {
imgPath = xml.item[0].path;
imgLink = xml.item[0].link;
imgLoader.load(new URLRequest(imgPath));
dataList.push([imgPath, imgLink]); //配列にElementを追加
//trace(imgPath);
//trace(imgLink);
}

}

//ロード完了後
private function imgLoaded(e:Event):void {
container.x = 12;
container.y = 11;
container.addChild(imgLoader.content);
}

//タイマーイベント
private function onTick(e:TimerEvent):void {
var count:int = minutetimer.currentCount;
var seconds:Number = (minutetimer.delay * count) / 1000;
trace(count + "回目" + seconds + "秒");
imgPath = xml.item[1].path;
imgLink = xml.item[1].link;
imgLoader.load(new URLRequest(imgPath));
}

//クリックイベント
private function onClick(e:MouseEvent):void {
var request:URLRequest = new URLRequest(imgLink);
navigateToURL(request, "_self");
}

private function onOver(e:MouseEvent):void {
buttonMode = true;
}

private function onOut(e:MouseEvent):void {
buttonMode = false;
}
}

}


この部分でもう一度画像を変えようとしているのですが
3秒経過した時点で以下のようなエラーが出てしまいます。。。

ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。
at flash.display::Loader/flash.display:Loader::_load()
at flash.display::Loader/load()
at XMLloader/::onTick()
at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
at flash.utils::Timer/flash.utils:Timer::tick()

/**********************************************************
//タイマーイベント
private function onTick(e:TimerEvent):void {
var count:int = minutetimer.currentCount;
var seconds:Number = (minutetimer.delay * count) / 1000;
trace(count + "回目" + seconds + "秒");
imgPath = xml.item[1].path;
imgLink = xml.item[1].link;
imgLoader.load(new URLRequest(imgPath));
}
/**********************************************************

XMLファイルはこちらになります。
xml/imgload.xml

<?xml version="1.0" encoding="utf-8"?>
<img>
<item>
<path>img/lbanner_01.jpg</path>
<link>http://www.adobe.com/jp/</link>
</item>
<item>
<path>img/lbanner_02.jpg</path>
<link>http://japan.cnet.com/</link>
</item>
</img>

かなりはまってしまって抜け出せないでいます。
どうかご教授いただければと思います。

------------------------
環境
OS:Windows Vista
Flashバージョン:CS3
------------------------


----------------
CS3 Windows Vista

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » xmlデータ読み込みとTimerクラスでの切り替え igaito 2010-1-8 16:16
     Re: xmlデータ読み込みとTimerクラスでの切り替え mayor 2010-1-8 18:14
       Re: xmlデータ読み込みとTimerクラスでの切り替え mayor 2010-1-8 18:44
         Re: xmlデータ読み込みとTimerクラスでの切り替え igaito 2010-1-8 18:52
         Re: xmlデータ読み込みとTimerクラスでの切り替え igaito 2010-1-8 21:43

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops