AS2代码到AS3

时间:2011-08-11 13:10:06

标签: actionscript-3 effect actionscript-2

所以我有一个问题。我找到了一个很酷的旧电视谷物代码(这里:http://www.republicofcode.com/tutori...ash/old_grain/),但它用AS2编写,我想把它转换成AS3。继承人原来的剧本

onClipEvent (enterFrame) {
_x = random(640);
_y = random(480);
_rotation = random(360);
_alpha = random(100);
_xscale = nue;
_yscale = nue;
nue = random(65);
}

我的重写版本:

addEventListener(Event.ENTER_FRAME,start);
function start (e:Event):void{
x = Math. random()*640;
y = Math.random()*480;
rotation = Math.random()*360;
alpha = Math.random()*100;
scaleX = nue;
scaleY = nue;
nue = Math.random()*65;

但它说:1120:访问未定义的属性nue。你知道怎么解决它吗?

提前致谢!

嘿伙计们! 谢谢您的帮助!我用闪光灯“工作”了2天,所以你们都救了我的命。我试图解决我的问题,并阅读它,但由于我的第一语言不是英语,它有点复杂!再次感谢, 来自匈牙利的女孩 BTW。这是最终的代码

var nue:Number= 65;
addEventListener(Event.ENTER_FRAME, update);
function update(event:Event):void {
x = Math. random()*640;
y = Math.random()*480; 
rotation = Math.random()*360;
alpha = Math.random()*10; 
nue = Math.random()*65; 
scaleX = nue;
scaleY = nue;
} 

2 个答案:

答案 0 :(得分:2)

是的,您必须将nue声明为变量:

var nue:Number=1;

addEventListener(Event.ENTER_FRAME, update);

function update(event:Event):void {
    x = Math. random()*640;   // I think 640 must be stage.stageWidth
    y = Math.random()*480;    // and 480 must be stage.stageHeight
    rotation = Math.random()*360;
    alpha = Math.random();   // In AS2 alpha goes from 0 to 100 in AS3 goes from 0 to 1
    scaleX = nue;
    scaleY = nue;
    nue = Math.random()*65;
}

答案 1 :(得分:2)

在AS3中,你不能拥有一个没有价值的变量,并期望它有一个变量。您应该给它一个值或将其设置为undefined。 你在函数的末尾使用nue,然后给它一个值,它需要反过来:

var nue:Number;

addEventListener(Event.ENTER_FRAME, update);

function update(event:Event):void {
    x = Math. random()*640;
    y = Math.random()*480;    
    rotation = Math.random()*360;
    alpha = Math.random();   
    nue = Math.random()*65; // set nue 
    scaleX = nue;           // then use it
    scaleY = nue;
}  

另请注意,AS3中的alpha属性的范围为0到1(包括0和1),而不是0到100.