flash as3.0的代码问题?

vara=newArray();varb=newArray();varsum=10;for(vari=1;i<=sum;i++){a.push(i);}for(varj:... var a = new Array();
var b = new Array();
var sum=10;
for (var i = 1; i <= sum; i++)
{
a.push(i);
}
for (var j:int=1; j<=sum; j++)
{
var ran=Math.floor(Math.random()*a.length);
b.push(a[ran]);/*从尾部压入*/
a[ran]=a[a.length-1];
a.pop();/*a.pop() 删除数组中最后一个元素,并返回该元素的值。*/
}
trace(b);

帮忙解释下:我不明白的地方:随机数是如何变成不重复的数字的???重点不明白的地方:a[ran]=a[a.length-1];
a.pop();
晕倒……
楼下二位:敢问你们读代码了没?!
展开
 我来答
每天debug
2009-06-06 · 超过35用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
是这样的,
for (var i = 1; i <= sum; i++)
{
a.push(i);
}
这段是将1到10写入a数组里
var ran=Math.floor(Math.random()*a.length);
随机生成一个10以内的整整
b.push(a[ran]);/*从尾部压入*/
将数组a[ran]中的值压入b里,这样b里面就有了a数组中随机生成的那个值
a[ran],所以a[ran]自身的值就没有用了,因为己经存入b了,这时
a[ran]=a[a.length-1]; 是将a[ran]的值改成a.pop()出栈的值 ,然后
a.pop()出栈,a.pop()的值己转到a[ran],自己的数组减1
举例:
假如for第一次执行; ran=6
那么b=a[6]
a[6]=a[10]
a.pop()出栈,丢弃a[10]值,同时a数组长度减一,这样下次
var ran=Math.floor(Math.random()*a.length); 就会随机生成a[1]-a[9]其中之一,既使ran又等于6他里面的值也变成了a[10]的值,
其实简单的说,就是每次将a[最大值]转到数组里,将数组里的值随机选中一个给b[],然后a[]出栈减一个,所以不会重复
明白了吗?
呵呵,可能我的文字描述有点乱,道理就是这样的
wang5shaojian
2009-06-06 · TA获得超过142个赞
知道答主
回答量:396
采纳率:0%
帮助的人:118万
展开全部
最佳答案
如果你在CS3中新建文件时选了flashFile(actionscript3.0)了。。
那代码不能在按钮上写了

只能这样写
给按钮一个实例名称如叫它"btn"
然后把下面的代码放在帧上
btn.addEventListener(MouseEvent.CLICK, btnOnclick);
function btnOnclick(evt:MouseEvent):void {
gotoAndPlay(3);
}
stop();
就可以了。。
那个Flash可能是用AS2.0编脚本的。AS2.0和3.0的命名方式有所不同
AS2.0:xx=new xxx();
AS3.0:var xx:xxx=new xxx();
如果你用AS3.0编2.0的脚本,命名方式不同会导致定义无效。所以你应该新建个AS2.0的文件再把脚本导入过来

/////////////////////
如果你不会as3.0的语法。那就新建一个flashFile(actionscript2.0)的文件。。
这样就可以用
on(release) {
/////////
}了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kbyqwe
2009-06-06 · TA获得超过102个赞
知道答主
回答量:82
采纳率:0%
帮助的人:0
展开全部
只能这样写
给按钮一个实例名称如叫它"btn"
然后把下面的代码放在帧上
btn.addEventListener(MouseEvent.CLICK, btnOnclick);
function btnOnclick(evt:MouseEvent):void {
gotoAndPlay(3);
}
stop();
就可以了。。
那个Flash可能是用AS2.0编脚本的。AS2.0和3.0的命名方式有所不同
AS2.0:xx=new xxx();
AS3.0:var xx:xxx=new xxx();
如果你用AS3.0编2.0的脚本,命名方式不同会导致定义无效。所以你应该新建个AS2.0的文件再把脚本导入过来

/////////////////////
如果你不会as3.0的语法。那就新建一个flashFile(actionscript2.0)的文件。。
这样就可以用
on(release) {
/////////
}了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
揭巍綦翔飞
2019-08-10 · TA获得超过3813个赞
知道大有可为答主
回答量:3114
采纳率:32%
帮助的人:158万
展开全部
改成这样吧
你想生成一个shape类,然后new
,但你的写法错了,而且不见得是在类文件(.as)中编写

你可以写成下面这样

for
(var
i:uint
=
0;
i<12;
i++)
{
var
sp:Sprite
=
new
Sprite();
addChild(sp);
sp.graphics.beginFill(0x0000ff);
sp.graphics.drawRect(-3,-85,6,25);
sp.graphics.endFill();
sp.rotation
+=
i*30;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旅映万俟骏年
2019-02-12 · TA获得超过3940个赞
知道大有可为答主
回答量:3208
采纳率:28%
帮助的人:160万
展开全部
1。语法错误,你想用Shape对象?请写var
aa:Shape
=
new
Shape();
2。即使没出语法错误,没看出上面的代码能画出一个时钟的12个时针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式