【问题标题】:converting legacy as1/2 code into as3将旧版 as1/2 代码转换为 as3
【发布时间】:2011-07-15 09:13:06
【问题描述】:

我有一个 .swf,我在互联网上下载了它是一个动画,我非常希望将它放在我的 .swf 中,但是,当我加载它并尝试控制 .swf 时出现错误代码。 TypeError:错误 #1034:类型强制失败:无法将 flash.display::AVM1Movie@10d52701 转换为 flash.display.MovieClip。

我在网上搜索了这个错误,这是因为 .swf 是在 as1/2 中编译的,因此我无法获取它的“对象”并对其进行控制。

我也反编译了 .swf 并阅读了代码,但代码大多在 as1/2 中完成,我不知道它是做什么的,因为我刚开始学习 as3,从未接触过 as1/2。

任何人都知道我能做什么?下面是反编译的代码,据我了解,它用于“移动”动画的各个部分。这是一个“鱼”的身体部位,创造出非常流畅的游泳动作。我已尝试将其转换为 as3 代码,但在找不到变量的地方出现错误。

function corps(objet)
{
    i = 0;
    for (;;) 
    {
        if (i >= 8) 
        {
            return;
        }
        tourne = Math.cos(i + getTimer() / (400 - m)) * 9;
        objet["p" + i]._rotation = (0 - tourne) / 2;
        objet.p5["p" + i]._rotation = 0 - tourne;
        objet.p5.p4["p" + i]._rotation = 0 - tourne;
        objet.p5.p4.p3["p" + i]._rotation = 0 - tourne;
        objet.p5.p4.p3.p2["p" + i]._rotation = 0 - tourne;
        objet.p5.p4.p3.p2.p1["p" + i]._rotation = (0 - tourne) / 2;
        ++i;
    }
}
function fish(objeti)
{
    if (objeti._x && objeti._y) 
    {
        corps(objeti);
    }
}
var j = Math.random(20) * 7 - 5;
var m = Math.random(50) * 2;
j = 4;
m = 4;
k = 0;
u = 0;
v = 1;
this.poisson.s = 1;
this.poisson.vari = this.poisson._width / 10 + this.poisson._height / 10;
this.onEnterFrame = function ()
{
    fish(this.poisson);
}
;

【问题讨论】:

  • 反编译代码...你可以随时联系原(法语)程序员:-)
  • 是的,我做到了,但我认为他的英语不是很好,我很难理解他给我打的内容。
  • 你在哪里可以理解他是否同意你反编译和重用它?

标签: flash actionscript-3 actionscript-2


【解决方案1】:

您需要将所有以_ 开头的属性更改为其对应的AS3 属性。 IE。 _width 应该是 width_rotation 应该是 rotation,为 _width, _height, _x, _y, _rotation 执行此操作。

【讨论】:

  • 嗨,我这样做了,但是对于 var 字母,我不知道它是如何出现的,此代码位于文件的主时间轴上。
【解决方案2】:

看起来您需要将poisson 的实例放置在舞台上并命名。是在图书馆吗?请务必将实例命名为poisson

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 2019-07-16
    • 2017-08-14
    • 1970-01-01
    • 2013-07-18
    • 2017-07-28
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多