来自 XML 的 ActionScript 3 按钮和链接
ActionScript 3 buttons and links from XML
我通过 ActionScript 3.0
成功地将具有粗略结构的远程 XML 文档导入 Flash CC
AS3 看起来像:
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
var myXML: XML = new XML();
var myXMLList:XMLList = new XMLList;
var XML_URL: String = "http://dirtymitten.org/xmlbuttons.xml";
var myXMLURL: URLRequest = new URLRequest(XML_URL);
var myLoader: URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event: Event): void {
myXML = XML(myLoader.data);
trace("data loaded");
var i:int = 1;
var number_txt:String;
for each (var node in myXML.Listing)
{
number_txt = "button number " + i.toString();
trace(node.Title);
trace(node.Url);
trace( number_txt );
i++;
}
}
跟踪语句按预期工作,迭代也工作。
我未能完成的是能够获取 MovieClip 实例来继承这些值。我有一个名为 MyButton 的库对象,其中包含动态文本字段 title_txt 和 count_txt。当我更改 for each 循环以实例化新的 MyButton 实例时,出现一些错误:
...
for each (var node in myXML.Listing)
{
var myButton:MyButton = new MyButton();
myButton.title_txt.text = node.Title;
myButton.count_txt.text = i.toString();
myButton.url = node.Url;
number_txt = "button number " + i.toString();
trace(node.Title);
trace(node.Url);
trace( number_txt );
i++;
}
...
我的错误是 Scene 1, Layer 'actions', Frame 1, Line 27, Column 22 1119: Access of possibly undefined property text through a reference with static type String.
和第 28 行的另一个错误,对应于:
myButton.title_txt.text = node.Title;
myButton.count_txt.text = i.toString();
意味着文本 属性 不受开箱即用的支持,或者我没有访问 MovieClip 对象,而是 [=16 的不存在的 属性 =] 来自自定义 class MyButton。我以为在 class 中设置与 Library 对象的名称匹配的属性会相互对应,但情况似乎并非如此。
在库对象 MyButton 中,我有 title_txt 和 count_txt 的动态文本字段,我想用 XML 填充它们。
MyButton.as class 定义是一个单独的文件,构建方式如下:
package {
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
public class MyButton extends MovieClip {
// constructor code
public var url:String;
public var title_txt:String;
public var count_txt:String;
public function MyButton(){
this.addEventListener(MouseEvent.CLICK, clickHandler);
}
private function clickHandler(e:MouseEvent):void{
if (!url) return;
navigateToURL(new URLRequest(url), "_blank");
}
}
}
我没有明确包含该文件,因为它是自己生成的,后来又进行了编辑,所以我认为它已绑定到库 MovieClip,不需要显式导入 MyButton.as。它是 xml button.fla 项目的目标,所以我假设它是隐式绑定的。
如何生成带有 XML 派生的标签和 URL 的按钮,假设 XML 加载干净且自定义 classes 存在于我想使用的 MovieClip?
I have a Library object called MyButton with dynamic text fields title_txt and count_txt.
不,你不知道。您有一个 class,其中包含上述名称的字符串变量:
public class MyButton extends MovieClip {
public var url:String;
public var title_txt:String; //THIS IS A STRING, NOT A TEXTFIELD!!!
public var count_txt:String;
但字符串不是文本字段。就像苹果不是橙子一样。
如果您想要 TextFields,您应该相应地键入您的变量。
我通过 ActionScript 3.0
成功地将具有粗略结构的远程 XML 文档导入 Flash CCAS3 看起来像:
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
var myXML: XML = new XML();
var myXMLList:XMLList = new XMLList;
var XML_URL: String = "http://dirtymitten.org/xmlbuttons.xml";
var myXMLURL: URLRequest = new URLRequest(XML_URL);
var myLoader: URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event: Event): void {
myXML = XML(myLoader.data);
trace("data loaded");
var i:int = 1;
var number_txt:String;
for each (var node in myXML.Listing)
{
number_txt = "button number " + i.toString();
trace(node.Title);
trace(node.Url);
trace( number_txt );
i++;
}
}
跟踪语句按预期工作,迭代也工作。
我未能完成的是能够获取 MovieClip 实例来继承这些值。我有一个名为 MyButton 的库对象,其中包含动态文本字段 title_txt 和 count_txt。当我更改 for each 循环以实例化新的 MyButton 实例时,出现一些错误:
...
for each (var node in myXML.Listing)
{
var myButton:MyButton = new MyButton();
myButton.title_txt.text = node.Title;
myButton.count_txt.text = i.toString();
myButton.url = node.Url;
number_txt = "button number " + i.toString();
trace(node.Title);
trace(node.Url);
trace( number_txt );
i++;
}
...
我的错误是 Scene 1, Layer 'actions', Frame 1, Line 27, Column 22 1119: Access of possibly undefined property text through a reference with static type String.
和第 28 行的另一个错误,对应于:
myButton.title_txt.text = node.Title;
myButton.count_txt.text = i.toString();
意味着文本 属性 不受开箱即用的支持,或者我没有访问 MovieClip 对象,而是 [=16 的不存在的 属性 =] 来自自定义 class MyButton。我以为在 class 中设置与 Library 对象的名称匹配的属性会相互对应,但情况似乎并非如此。
在库对象 MyButton 中,我有 title_txt 和 count_txt 的动态文本字段,我想用 XML 填充它们。
MyButton.as class 定义是一个单独的文件,构建方式如下:
package {
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
public class MyButton extends MovieClip {
// constructor code
public var url:String;
public var title_txt:String;
public var count_txt:String;
public function MyButton(){
this.addEventListener(MouseEvent.CLICK, clickHandler);
}
private function clickHandler(e:MouseEvent):void{
if (!url) return;
navigateToURL(new URLRequest(url), "_blank");
}
}
}
我没有明确包含该文件,因为它是自己生成的,后来又进行了编辑,所以我认为它已绑定到库 MovieClip,不需要显式导入 MyButton.as。它是 xml button.fla 项目的目标,所以我假设它是隐式绑定的。
如何生成带有 XML 派生的标签和 URL 的按钮,假设 XML 加载干净且自定义 classes 存在于我想使用的 MovieClip?
I have a Library object called MyButton with dynamic text fields title_txt and count_txt.
不,你不知道。您有一个 class,其中包含上述名称的字符串变量:
public class MyButton extends MovieClip {
public var url:String;
public var title_txt:String; //THIS IS A STRING, NOT A TEXTFIELD!!!
public var count_txt:String;
但字符串不是文本字段。就像苹果不是橙子一样。
如果您想要 TextFields,您应该相应地键入您的变量。