【问题标题】:1180 error:Call to a possibly undefined method addFrameScript in as31180 错误:调用 as3 中可能未定义的方法 addFrameScript
【发布时间】:2014-11-28 10:10:21
【问题描述】:
package {
import flash.display.Sprite;
import flash.utils.*;

public class SetTimeoutExample extends Sprite {
    private var delay:Number = 1000; // delay before calling myDelayedFunction

    public function SetTimeoutExample() {
        var intervalId:uint = setTimeout(myDelayedFunction, delay,stopTime);
    }

    public function myDelayedFunction():void {
        if(arguments[0] ==fk.playheadTime)
        {fk.pause();}
    }
}
}//this is my document class named SetTimeoutExample.as

import flash.net.URLLoader;
import fl.video.*;
import flash.utils.getTimer;
import flash.events.Event;


fk.autoPlay = false;


var myLoaderInfo=new Object();


myLoaderInfo.myParamsLoaded = false;


myLoaderInfo.loaderComplete = loaderComplete;



this.loaderInfo.addEventListener(Event.COMPLETE, myLoaderInfo.loaderComplete);



myLoaderInfo.useParams = useParams;

var myParams:Object = new Object();
var myParamsLoaded:Object = new Object();

function loaderComplete(myEvent:Event)
{
this.myParams = this.loaderInfo.parameters;
this.myParamsLoaded = true;//Parametrelerin yuklendigine emin olduk.

this.useParams();

    fk.play(src);
}

var src:String;
var startTime:Number;
var stopTime:Number;

function useParams()
{
    var obj:Object = new Object();

var j;
for (j in this.myParams)
{
    if (j == "url")
    {
        src = this.myParams[j];
    }
    else if (j=="bas")
    {
        startTime = int(this.myParams[j]);
    }
    else
    {
        stopTime = int(this.myParams[j]);
    }
}
}

fk.addEventListener(VideoEvent.READY, bitti);
function bitti(eventObject:VideoEvent):void
{
    fk.seekSeconds(startTime);


}  //this is my player.fla 

嗨,我在 as3 中遇到了这个 1180 错误。我该如何解决这个问题?我用谷歌搜索它,但我无法将解决方案应用于我的代码。我真的是 as3 的新手。感谢任何帮助。

【问题讨论】:

  • 有些论坛说扩展 MovieClip,但是当我尝试这个时,我又遇到了一些错误。

标签: flash actionscript-3


【解决方案1】:

让我直截了当地说:您在 fla 属性中设置了 Document Class 并且也直接在 fla 中编写代码?

如果是这种情况,解决方案很简单:要么只在外部 .as 文件中编写代码,而不是 fla,或者如果您希望继续在 Timeline 上编写代码,请不要使用 Document Class。 您得到的错误代码表明您的Timeline 上有代码,其行为类似于MovieClip,而您的Document Class 扩展Sprite,因此不知道名为addFrameScript 的方法(此方法在编译时调用Timeline 上的代码到 SWF 文件中)。

简而言之,我建议你改变

public class SetTimeoutExample extends Sprite {

public class SetTimeoutExample extends MovieClip {

并将您所有的 fla 代码移至 Document Class

【讨论】:

    【解决方案2】:

    你有时间线代码吗? AddFrameScript() 是被调用以允许时间线代码执行的方法。我自己也看到过这个错误。

    只要确保您的任何资产的时间轴上都没有任何代码,那应该会消失。

    【讨论】:

      【解决方案3】:

      我解决了这个问题,现在我成功地使用了外部 AS 类,同时在 TimeLine 上实现了一些其他功能:

      只要遵循这个简单的“规则”,问题就可以解决:

      • 如果您只想从外部 CLASS 加载所有内容,则必须将 .fla 文件“链接”到 .as(“文档类”):

        时间线使用 addFrameScript 函数

      • 如果你想使用课堂上的一些东西,同时在时间轴上做其他事情,你只需要在时间轴上放一条类似的线:

        var myClassObject:myClass = new myClass();
        this.addChild(myClassObject);
        

      【讨论】:

        【解决方案4】:

        我也遇到了这个问题。问题是我的容器影片剪辑正在扩展 Sprite 并且在内部,其中一个控件被转换为具有属性的 Flash 组件......我有一种感觉 Flash 试图在时间轴上设置这些属性的值。从舞台上移除组件并从库中添加它为我解决了这个问题,在我拔掉头发 30 分钟后....

        【讨论】:

        【解决方案5】:

        得到

        TypeError:错误 #1034:类型强制失败:无法将 the_game@2a9c50b1 转换为 flash.display.MovieClip。 在游戏::播放器/更新() 在 the_game_itself/update()

        有点慢...

        【讨论】:

          【解决方案6】:

          如果您在将代码添加到影片剪辑(不在时间轴上)时遇到问题(标题)中的错误,请尝试以下操作:

          可能是库项目 (movieclip) 的动作脚本属性设置为从 Sprite (基类) 继承...某种编码错误...检查影片剪辑动作脚本属性(在库中,右键单击(在影片剪辑)/属性)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-06
            • 2012-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多