求助as2.0代码,如图所示。这是个连线类的题目。 150
这是什么?是课件吗?给你一种简洁的构建思路吧,希望你有认真地看!
1,先说一下这个“圆”应该做成影片剪辑,结构如下图:
图层1第1帧是脚本:
stop();
图层2是一个静太文本,用来输入问题或答案。
图层3第1帧是一个正常的背景,就象你画的圆,色彩为自定。对齐方式为居中对齐,也就是说实例的注册点在中心位置(不是(0,0)点)。
图层3第2帧跟1帧的背景相同,色彩为灰色就可以。(区别再于颜色不同)
2,在库里面直接复制上面的影片剪辑(在库中右键点击刚做好的元件,在弹出的菜单中单击直接复制),需要多少个吧就复制多少个。然后在每个的图层2中修改问题或答案,再修改问题元件或答案元件不同的背景以区分。
3,再插入一个新建元件:影片剪辑,做成什么样的不重要,跟据自己的喜好和创意,主要是当它不能档住在它下面的元件,比如是一个框,或是一个透明色彩的,假设前面1中制做的是一个圆背景你可以画一个比它大一点的空心圆。
4,制作一个按钮,用来重置题目。(已经超出了你的问题范围。)
看库中有多少元件:
5,回到主场景中来,如图:
图层1:as2.0脚本,代码如下:
/*本实例以三题三答为例,问题剪辑命名为:rboll0_mc,rboll1_mc,rboll2_mc,
*答案剪辑命名为:bboll0_mc,bboll1_mc,bboll2_mc,
*选题提示剪辑命名:cover_mc,
----------------------------------*/
var tacharr:Array = new Array();//声明一个数组,用来判断和谁连接。
//动态实现每一个影片剪辑都能执行相同的动作。
for (var i:Number = 0; i < 3; i++)
{
Press(i);
}
//构造一个单击实例时,会发生什么事。
function Press(n:Number)
{
//鼠标事件
this["rboll" + n + "_mc"].onPress = function()
{
swapbolls("r","rboll","bboll",n);
};
this["bboll" + n + "_mc"].onPress = function()
{
swapbolls("b","bboll","rboll",n);
};
}
/*---------------------构造鼠标事件的具体内容---------------------------*/
function swapbolls(str:String, a:String, b:String, n:Number)
{
//数组为空的时候,给它一个值,并提示我选择了它了。
if (tacharr.length < 1)
{
tacharr[0] = str + n;
this.cover_mc._x = this[a + n + "_mc"]._x;
this.cover_mc._y = this[a + n + "_mc"]._y;
}
//数组有一个成员,取消提示,开始配对,并判断配对情况。
else if (tacharr.length == 1)
{
tacharr[1] = str + n;
this.cover_mc._x = -100;
this.cover_mc._y = -100;
if (tacharr[0].substr(0, 1) == tacharr[1].substr(0, 1))
{
tacharr.splice(0,tacharr.length);//清空数组。
}
else if (tacharr[0].substr(0, 1) <> tacharr[1].substr(0, 1))
{
if (tacharr[0].substr(1, 2) == tacharr[1].substr(1, 2))
{
this.moveTo(this[a + n + "_mc"]._x,this[a + n + "_mc"]._y);//开始画线
this.lineStyle(1,0xff0000);//设置线形,色彩样式。
this.lineTo(this[b + n + "_mc"]._x,this[b + n + "_mc"]._y);//画到另一个对应实例的坐标位置。
this[a + n + "_mc"].enabled = false;//禁止鼠标事件
this[b + n + "_mc"].enabled = false;
trace("连线正确");
trace("--------------------");
}
else if (tacharr[0].substr(1, 2) <> tacharr[1].substr(1, 2))
{
this.moveTo(this[a + n + "_mc"]._x,this[a + n + "_mc"]._y);
this.lineStyle(1,0xffffff);
this.lineTo(this[b + (tacharr[0].substr(1, 2)) + "_mc"]._x,this[b + (tacharr[0].substr(1, 2)) + "_mc"]._y);
this[a + n + "_mc"].nextFrame();
this[a + n + "_mc"].enabled = false;
this[b + Number(tacharr[0].substr(1, 2)) + "_mc"].nextFrame();
this[b + Number(tacharr[0].substr(1, 2)) + "_mc"].enabled = false;
trace("连线错误");
trace("---------------------");
}
}
tacharr.splice(0,tacharr.length);
}
}
//实现重置功能
function replay()
{
for (var i:Number = 0; i < 3; i++)
{
this["rboll" + i + "_mc"].gotoAndStop(1);
this["bboll" + i + "_mc"].gotoAndStop(1);
this["rboll" + i + "_mc"].enabled = true;
this["bboll" + i + "_mc"].enabled = true;
this.clear();//清空画线
}
}
//代码注释不全面,请即时追问。2017-3-8 东芝搁笔。
图层2是按钮:单击按钮,F9打开动作面版,键入以下代码:
on (press) {
replay();
}
图层3是显示提示选中的影片剪辑:命名为:cover_mc ,坐标设在舞台以外。
图层4则是问题和答案的影片剪辑,设置好坐标位置在舞台上。
好了,这就完成了连线这类题型的模板,如果你说要提示正确或错误,请在第1帧代码中输出提示后面写入一个影片剪辑出现及消失就可以了。例:mc._visible=false,表示不可见,可见为 true;也可以设置 提示的剪辑的(x,y)坐标。