actionscript-3 - AS3公共(public)变量不会存储值

标签 actionscript-3 oop

这里是第一次发帖。

因此,我正在构建一个“多 RSS 提要阅读器”,并将其分为 2 个类:“TechFeed.as”和“Feed.as”;技术提要通过将 URL 传递给新的提要对象来实例化多个提要。

我目前的问题是,在 Feed.as 中,我有几个公共(public)变量,在 TechFeed.as 中使用它们来显示有关 feed 的基本详细信息,但是,这些变量拒绝保留我在 Feed 中赋予它们的任何值.as 的函数,并且显示为“null”。

编辑:也许还有一些需要注意的地方; TechFeed.as 是该阶段使用的主要 AS 文件。

TechFeed.as

package  {

    import flash.display.MovieClip;

    public class TechFeed extends MovieClip {

        private var feed_one:Feed = new Feed("http://feeds.feedburner.com/crunchgear");
        private var feed_two:Feed = new Feed("http://feeds.mashable.com/Mashable");
        private var feed_three:Feed = new Feed("http://www.engadget.com/rss.xml");

        public function TechFeed() {
            trace(feed_one.feed_title);

            //feed_name.text = feed_one.getFeedTitle();
        }

    }

}

Feed.as

package  {

    import flash.net.URLLoader;
    import flash.events.Event;
    import flash.net.URLRequest;

    public class Feed {

        //Public variables to display feed info
        public var feed_title:XMLList;
        public var feed_desc:String;
        public var feed_link:String;

        //Setting up variables which help load the feeds

        private var feedXML:XML;
        //Create a loader to load an external URL
        private var loader:URLLoader = new URLLoader();


        public function Feed(inURL:String = "") {
            //Load the xml document
            loader.load(new URLRequest(inURL));
            loader.addEventListener(Event.COMPLETE,onLoaded);
        }

        //When the loader had loaded the xml document, pass that into a variable for use. 
        private function onLoaded(e:Event):void {
            feedXML = new XML(e.target.data);

            // break down the xml document elements into singular XML array lists

            //Feed details
            this.feed_title = feedXML.channel.title;
            this.feed_link = feedXML.channel.link;
            this.feed_desc = feedXML.channel.description;

            trace(this.feed_title);

        }

    }

}

任何帮助将不胜感激:)

谢谢, 杰夫

最佳答案

您的问题是在服务器返回数据之前尝试从提要中写入数据的时间。
在此示例中,我分配了一个函数以在加载数据时进行回调。

封装{

    import flash.display.MovieClip;

    public class TechFeed extends MovieClip {

        private var feed_one:Feed;
        private var feed_two:Feed;
        private var feed_three:Feed;

        public function TechFeed() {
          feed_one= new Feed("http://feeds.feedburner.com/crunchgear",assignResults);
          feed_two= new Feed("http://feeds.mashable.com/Mashable",assignResults);
          feed_three= new Feed("http://www.engadget.com/rss.xml",assignResults);


        }

        public function assignResults(value:value):void{
          feed_name.text = value;
        }

    }

}






package  {

    import flash.net.URLLoader;
    import flash.events.Event;
    import flash.net.URLRequest;

    public class Feed {

        //Public variables to display feed info
        public var feed_title:XMLList;
        public var feed_desc:String;
        public var feed_link:String;

        //Setting up variables which help load the feeds

        private var feedXML:XML;
        //Create a loader to load an external URL
        private var loader:URLLoader = new URLLoader();

private var _callBackFunc:Function;
        public function Feed(inURL:String = "", callBackFunc:Function) {


           this._callBackFunc = callBackFunc;


            //Load the xml document
            loader.load(new URLRequest(inURL));
            loader.addEventListener(Event.COMPLETE,onLoaded);
        }

        //When the loader had loaded the xml document, pass that into a variable for use. 
        private function onLoaded(e:Event):void {
            feedXML = new XML(e.target.data);

            // break down the xml document elements into singular XML array lists

            //Feed details
            this.feed_title = feedXML.channel.title;
            this.feed_link = feedXML.channel.link;
            this.feed_desc = feedXML.channel.description;

            this._callBackFunc(this.feed_title);

        }

    }

}

关于actionscript-3 - AS3公共(public)变量不会存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927534/

相关文章:

java - 如何在 Applet 扩展类中调用 paint 方法?

php - Doctrine 多级继承映射

javascript - 如何使用 AS3 运行 jQuery 函数

actionscript-3 - 为什么我的 URLLoader 在完成时没有调度?

c++ - 类包含其他类问题的字段

multithreading - 作品。传回一个变量

java - 策略设计模式——在带有计数器的策略之间进行选择

actionscript-3 - Flex 3 方法可以检测调用对象吗?

java - 如何通过依赖注入(inject)和垃圾收集来防止循环引用?

actionscript-3 - as3 : does array splice delete an object completely?