【问题标题】:Loop as3; function intersects; onEnterFrame循环 as3;功能相交; onEnterFrame
【发布时间】:2013-09-09 16:02:40
【问题描述】:

在舞台上我有三种影片剪辑 少数静态影片剪辑,其名称为:mc1; mc2; mc3....他们在舞台上可见 很少有静态movielips“othermc1;othermc2l othermc3 ...并且它们具有“可见=假” 一个在舞台上移动的短片,他的名字叫“slider” 当 mc“滑块”与 mc1、mc2 的其余部分之一相交时,我有功能...以使 othermc1、othermc2 可见

var alreadyHandled:Boolean = false;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event):void
{
    if(mc1.getRect(this).intersects(slider.getRect(this)))
    {
        if(!alreadyHandled)
        {
            show1();
            alreadyHandled = true;
        }
    }
    else
    {
        alreadyHandled = false;
        no1();
    }

function show1():void
{
    othermc1.visible = true;
}
function no1():void
{
    othermc2.visible = false;
}

如何在循环中使用此代码? 感谢您的帮助

【问题讨论】:

  • 你想循环什么?这是您文件中的所有代码吗?
  • 循环是指测试所有影片剪辑(mc1、mc2、...、othermc1、othermc2、..),而不仅仅是 mc1?

标签: actionscript-3 flash flash-cs5 flash-cs4


【解决方案1】:

如果你想循环通过 mc1、mc2、mc3、... 创建一个 ArrayMovieClips:

var movieClips:Array = [mc1,mc2,mc3/*,other...*/];

然后使用for 遍历数组元素:

for(var i:int=0; i<movieClips.length; i++){
   //do some thing with movieClips[i]
}

此代码可能对您有所帮助:

var mc:Array = [mc1,mc2,mc3/*,...*/];
var omc:Array = [othermc1,othermc2,othermc3/*,other...*/];
addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event):void
{
    for(var i:int=0; i<mc.length; i++)
        if(mc[i].getRect(this).intersects(slider.getRect(this)))
            showMovieClip(i); //or omc[i].visible=true;
        else
            hideMovieClip(i); //or omc[i].visible=false;
}
function showMovieClip(i:int):void
{
    omc[i].visible = true;
}
function hideMovieClip(i:int):void
{
    omc[i].visible = false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2013-01-24
    • 1970-01-01
    相关资源
    最近更新 更多