首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问动态加载的动画(工作台>滚动窗格> myloader >育空页)

访问动态加载的动画(工作台>滚动窗格> myloader >育空页)
EN

Stack Overflow用户
提问于 2011-10-16 22:39:13
回答 3查看 1.2K关注 0票数 0

我想要做的是

代码语言:javascript
复制
   snapText = scrollPane.source.textSnapshot;

来自外部的主权财富基金。我试过:

代码语言:javascript
复制
  trace("-->: "+scrollPane.source.textSnapshot.getText(0, 1000));
  trace("-->: "+myLoader.content.textSnapshot.getText(0, 1000));
  trace("-->: "+mc.textSnapshot.getText(0, 1000));
  trace("-->: "+mc.getChildAt(0).textSnapshot.getText(0, 1000));
  trace("-->: "+mc.getChildByName(myLoader).textSnapshot.getText(0, 1000) );
  trace("-->: "+scrollPane.content.textSnapshot.getText(0, 100));

所有这些都是徒劳的。顺便说一下:

代码语言:javascript
复制
  mc.getChildAt(0).textSnapshot.getText(0, 1000)

抛出错误:

代码语言:javascript
复制
  1119: Access of possibly undefined property textSnapshot through a reference with static type flash.display:DisplayObject.

虽然我知道方法在那里。

以上所有代码都在函数checkHandler中运行:

代码语言:javascript
复制
 myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, checkHandler);

所以主权财富基金应该是完全装载的。文本也在那里,我已经用swf反编译器检查过了。带有加载程序的电影页是这样创建的

代码语言:javascript
复制
 scrollPane = MovieClip(root).scrollPaneOnStage;
 myLoader.load(new URLRequest("tmp1.swf"));
 mc.addChild(myLoader);
 scrollPane.source = mc;

提前谢谢!

更新--仍未解析

正如HotN所指出的,我现在正在访问swf。

代码语言:javascript
复制
  function checkHandler(evt:Event):void {

         libMC  = evt.target.content as MovieClip;
         libMC.gotoAndStop(0); 
          trace(libMC.textSnapshot.getText(0, 100));
         snapText = libMC.textSnapshot;
        scrollPane.source = mc;
    }

这首先导致错误,因为as3脚本中的加载程序无法加载as2电影(即。AVM1)。因此,我创建了一个AVM2 swf,它导致了错误:Error #2000: solution。作为解决方案,我使用http://www.igorcosta.org/?p=231中的一个类加载swf,但仍然不能访问textSnapshot:

代码语言:javascript
复制
  trace(libMC.textSnapshot.getText(0, 100));

不返回任何东西,也不抛出错误!

顺便说一句:虽然我可以改变swf的格式,但我不能真正改变文件本身,因为它是自动生成的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-24 16:55:31

所以这件事花了我太长时间,但我弄明白了。

代码语言:javascript
复制
      //... {

        loader = new Loader();  
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, checkHandler);
        loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
        var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain); 
        context.checkPolicyFile = false;
        loader.load(new URLRequest("tmp1.swf"), context);


      //..... }

      function checkHandler(evt:Event):void {

        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,checkHandler);

        libMC  = loader.content as MovieClip;

                    //works now!
            libMC.textSnapshot.getText(100, 200);

        scrollPane.source = libMC;


    }

所以诀窍是像很多次建议的那样使用标准的加载程序函数。然而,flash在某种程度上扰乱了本地pc上的安全性/沙箱设置,这导致了错误#2000:没有活动的安全上下文。但是,当上传到远程服务器时,它仍然工作得很好,这很奇怪。您可以在“文件”>“发布设置”下将本地播放设置为“只访问本地文件”,但这在我的情况下根本没有帮助.

票数 0
EN

Stack Overflow用户

发布于 2011-10-17 00:46:00

为了在加载的swf中引用任何内容,您需要遍历加载器的内容。这会让你得到这样的参考:

代码语言:javascript
复制
function checkHandler(e:Event):void {
    var loadedSWF:Object = e.target.content;
}

通过浏览loadedSWF,您可以获得swf的内容,假设它们设置为公共可见性。

票数 1
EN

Stack Overflow用户

发布于 2011-10-17 14:51:44

您正在使用TLF引擎( textfields)吗?Flash CS5 TLF引擎在加载SWF并试图访问那些加载的SWF的属性或方法时会导致一些错误。您可以在史蒂文·萨克斯的这篇博客文章中阅读到有关这方面的所有内容。

如果是这样的话,解决方案非常简单:将TextField更改为常规字段(它被命名为经典文本,TextField属性面板上有一个选择器),并且(希望)一切都能正常工作,没有进一步的代码更改。

如果您需要TLF文本,并且无法处理常规文本,您可以在这个Adobe Technote中找到一些解决方案(更像是解决方案,但无论如何)。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7787843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档