Flashムービーを作成して、Flashムービーの既存のMovieClipを置き換える必要のあるテキストと画像URLの詳細を含むXMLを読み込みます。表示オブジェクトをFlash内の新しい表示オブジェクトに置き換えます。
Flashで既存のMovieClipを置き換える方法や、更新された/新しい表示オブジェクトが元の表示オブジェクトの元の外観を維持し、元の表示オブジェクトのTweeningが引き続き新しい更新された表示オブジェクト。
おかげ
スティーブン
アップデート:私はあなたの問題が何であるか本当にわからないんだけど
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Loader;
import flash.text.TextField;
import flash.events.ProgressEvent;
// get the number of children in display list
var count:uint = numChildren;
// get the url for the Ceres server
//var configUrl:String = loaderInfo.parameters.configUrl;
// load the config file from the server using the configUrl
var configUrl:String = "C:\development\projects\ReadXMLInFlash\example_xml_ceres_response.xml"; //loaderInfo.parameters.configFileUrl;
var defaultImgUrl:String = loaderInfo.parameters.defaultImgUrl;
var urlRequest:URLRequest = new URLRequest(configUrl);
// create the XML loader
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE, onDataLoaded);
//Error handling ;
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
//Could be an error or just a message;
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
function onDataLoaded(evt:Event):void
{
var myXML:XML = new XML(evt.target.data);
var node:XML;
// loop through the XML
for each (node in myXML.dynamicGroups.DynamicGroup.assets.Asset.elements.Element)
{
// check the assetValue of the XML, if contains http then a link use 'createNewImageLoader'
if(String(node.assetTagName) == 'Image')
{
createNewImageLoader(node.assetValue, node.elementName);
}
else
{
// else it is text (e.g. a product descrition) use createNewTextLoader
createNewTextLoader(node.assetValue, node.elementName);
}
}
}
//error callbacks
function onIOError(evt:IOErrorEvent)
{
trace("IOError: "+evt.text);
// if an error load the default image
var defaultImgLoader:Loader = new Loader();
var defaultImgUrl:URLRequest = new URLRequest(defaultImgUrl);
defaultImgLoader.load(defaultImgUrl);
addChild(defaultImgLoader);
}
function onHTTPStatus(evt:HTTPStatusEvent)
{
//trace("HTTPStatus: "+evt.status);
}
function onSecurityError(evt:SecurityErrorEvent)
{
trace("SecurityError: "+evt.text);
}
// loads a image asset
function createNewImageLoader(loadURL:String, elementname:String):void
{
for(var i:uint=0;i<numChildren;i++)
{
var display:DisplayObject = getChildAt(i);
if (elementname == display.name)
{
var loader:Loader = new Loader();
var urlRequest:URLRequest = new URLRequest(loadURL);
loader.addEventListener(Event.COMPLETE, function(){
loader.x = display.x;
loader.y = display.y;
addChild(loader);
removeChild(display);
});
loader.load(urlRequest);
}
}
}
// adds new text to a display object
function createNewTextLoader(textToLoad:String, elementname:String):void
{
trace("elementname:" + elementname);
for(var i:uint=0;i<count;i++)
{
var display:DisplayObject = getChildAt(i);
trace("displayName:" + display.name);
if (elementname == display.name)
{
var textToDisplay:TextField = new TextField();
textToDisplay.text = textToLoad;
textToDisplay.x = display.x;
textToDisplay.y = display.y;
addChild(textToDisplay);
removeChild(display);
break;
}
}
}
あなたが更新/新しい表示オブジェクトが保持します」によって何を意味しています元の表示オブジェクトの元の外観 "? – Kodiak
MovieClipに青いテキストが含まれている場合、そのMCに追加された新しいテキストも同じ色などです。実行時にこれらのMovieClipsに新しいデータを挿入しようとしています。他の誰かが簡単なFlashムービーを作成すると、コードがXMLを読み込んで新しいデータをFlashムービーに挿入します。 – StephenAdams
実行時に定数以外の何かを変更することができます。正確に何をしようとしていますか? – weltraumpirat