Flash as3在点击时显示特定的影片剪辑

时间:2012-09-13 14:41:20

标签: actionscript-3 flash

我刚刚开始使用闪存,所以这可能是一件简单的事情,所以请耐心等待。

我正在做一个项目,如果我有一张地图,你可以点击地图上的地点,然后会出现信息。我可以设法将每个button_btn链接到每个info_mc但这需要永远,所以我尝试创建一个函数来读取按钮名称并重定向到info_mc本身。但是,当我从name_mc更改为name_info时,名称正在转换为字符串,因此它不会重定向。这是代码。

    winterfell_info.visible = false;

    map.winterfell_btn.doubleclickEnabled = true;
    map.winterfell_btn.mouseChildren = doubleClickEnabled;
    map.winterfell_btn.addEventListener(MouseEvent.DOUBLE_CLICK, show_clicked);

    function show_clicked(e:MouseEvent):void{
         var get_name = e.currentTarget.name;
         var open_info_string = get_name.slice(0,-3) + "info";
         //I've tried some things here but nothing is working for me. 
         var open_info = stage.getChildByName(open_info_string);
         open_info.visible = true;      
    }

非常感谢任何帮助,谢谢。

如果你想知道它是权力的游戏地图。

2 个答案:

答案 0 :(得分:0)

删除“open_info_string”周围的引号,作为第一个度量,并将该字符串中的大写字母S更改为正常的“s”,因为Actionscript区分大小写。

var open_info = stage.getChildByName(open_info_string);

然后,如果它不能立即生效,请在尝试访问影片剪辑之前插入trace(open_info_string);,以确定它是否被正确裁剪。

答案 1 :(得分:0)

我做过类似的事情......我没时间调整代码,但如果你看看我在这里做了什么,我相信它会对你有所帮助。我在我的视频播放器上创建了一个带有对象实例名称的数组,然后创建了一个函数,该函数使用switch case语句添加了相应的事件监听器。在我看来,这是最简单的方法。

var buttons:Array = [clicky,pauseBtn,playBtn];

for (var i in buttons)
{
    buttons[i].buttonMode = buttons[i].useHandCursor = true;
    addEventListner(buttons[i]);
}

function addEventListner(movieClip)
{
    movieClip.addEventListener(MouseEvent.CLICK, function(e){
    e.stopPropagation();
    switch (movieClip.name)
    {
    case "playBtn" :
    youTubeHolder.videoPlayer.playVideo();
    videoController.playBtn.visible = false;
    videoController.pauseBtn.visible = true;
    break;

    case "pauseBtn" :
    youTubeHolder.videoPlayer.pauseVideo();
    videoController.playBtn.visible = true;
    videoController.pauseBtn.visible = false;
    break;

    case "stopBtn" :
    youTubeHolder.videoPlayer.seekTo(0);
    youTubeHolder.videoPlayer.stopVideo();

    break;

    default :
    trace(movieClip.name+"is not a valid button");
    }


    });
}