急求:Scrollpane中怎么置入duplicateMovieClip出来的Movie Clip对象?

楚人无衣 2005-06-02 09:23:46
这几天在因项目需要在研究Flash MX,用到一个功能,就是一个Movie Clip对象,起名叫mcSlide吧,在场景中动态复制若干个对象,如下代码:
for (i = 0; i < 4; i++) //这里4为举例证,实现情况为一数值
{
mcSlide.duplicateMovieClip("mcSlide" + i, i);
eval("mcSlide" + i).mcActiveHighlight._visible = false;
eval("mcSlide" + i).sTopic.text = "mcSlide" + i; //sTopic为其中一动态文本对象
eval("mcSlide" + i).ldrSlide.loadMovie("tb" + (i+1).toString() + ".swf"); //ldrSlide为其中一Loder控件
eval("mcSlide" + i)._x = 525;
eval("mcSlide" + i).swfPath = "slide" + (i+1).toString() + ".swf";
eval("mcSlide" + i)._y = i * (mcSlide._height + 8) + 88; //自设之变量,为以后用
}
这样运行的结果倒是在场景中生成了指定个数的Movie Clip对象从上到下排列并如代码所示一样加入了文本及载入swf等操作,现在我想要的是这些Movie Clip置入场景中一Scrollpane实例中并受其控制;帮助中说明Scrollpane可载入swf、图片及影片剪辑等,前面两种且不说,就是加入影片剪辑,则要加入的剪辑须在库中存在并已设好连接标识符,我却没办法加入我想要的在场景中复制出来的那些Movie Clip;我曾想能否新建一剪辑mcGuide,设定其连接标识符,置其入Scroll;ane实例中,然后怎么能把那些复制出来的Movie Clip加入mcGuide中并且能在Scrollpane中体现出来呢?高手们请帮我!!不限于此方法,能用其它方法实现此功能也好;我要实现的目的是在Scrollpane中的每个Movie Clip对象都能响应鼠标事件,这在mcSlide中已有个按钮并且能实现,现在想要的就是置入……这个贴子http://community.csdn.net/Expert/topic/3666/3666592.xml?temp=.6904566或许对我有些帮助,可是联系不到楼主和abbaboy(静止的云),卡了两天了,急用啊!
...全文
187 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fklyzlwq 2005-06-02
  • 打赏
  • 举报
回复
首先,trace(mc._name);這句如果有輸出,那麼MC就可以直接操作了.如果輸出是undefined,那麼你要嘗試一下其它的方法,就是我剛才說的引用不成功的時候使用的方法.另外, spslide.setScrollContent(mc);這句我記得好像是MX裡Scrollpane的方法.MX2004自帶的Scrollpane組件沒有這個方法,不清楚你用的是否第三方寫的組件.不過你之前已經用spslide.contentPath = "mcGuide";設定了路徑,而mc又是該對象的引用,那麼這裡變成遞歸了.總感覺怪怪的.還有一個問題就是,居我所知.第三方寫的組件好像也沒有即支持contentPath,又支持setScrollContent的,我有很長一段時間沒寫AS,記不太清楚了,說錯了別見怪.
你還可以先試試這個方法,如果成功了.再嘗試你當前的想法
直接在Library中生成現在效果的范本.然後用ScrollPane加載.如果成功.就將范本換成空的MC.引用它.然後用trace跟蹤它,看看是否成功.不成功再換另外的方法.直到成功為止.
楚人无衣 2005-06-02
  • 打赏
  • 举报
回复
mc.attachMovie("mcSlide", "mc" + i, i);这一句,我总觉的不对;mcSlide也是mcSlide的链接标识符
楚人无衣 2005-06-02
  • 打赏
  • 举报
回复
您好,我用的是Flash MX 2004,其实我实际的代码如下面所示,你指导一下:
initSwf();

function initSwf()
{
spslide.contentPath = "mcGuide"; //库中的mcGuide对象,里面载mcSlide用
mc = _root.spslide.content; //spslide是一个Scrollpane在场景中的实例
trace(mc._name);
for (i = 0; i < 4; i++)
{
mcSlide.duplicateMovieClip("mcSlide" + i, i);
eval("mcSlide" + i).mcActiveHighlight._visible = false;
eval("mcSlide" + i).sTopic.text = "mcSlide" + i;
eval("mcSlide" + i).ldrSlide.loadMovie("tb" + (i+1).toString() + ".swf");
eval("mcSlide" + i)._x = 525;
eval("mcSlide" + i).swfPath = "slide" + (i+1).toString() + ".swf";
eval("mcSlide" + i)._y = i * (mcSlide._height + 8) + 88;
mc.attachMovie("mcSlide", "mc" + i, i);
}
spslide.setScrollContent(mc);
spslide.refreshPane();
}
这样却出不来我要的结果,看一下,这样对吗?
fklyzlwq 2005-06-02
  • 打赏
  • 举报
回复
MX可以加載由AS生成的MC,但2004則必須從Library中加載.
你說的MX是指MX2004還是MX?記得MX是沒有Loader的.
如果是MX.則可以先用AS生成一個MC,把這個MC加載到Scrollpane中.然後直接用這個MC加載需要的按鈕.
如果是MX2004,則必須事先創建一個空MC到Library中,運行的時候將這個MC用contentPath屬性加載到Scrollpane中.然後指定一個引用.XXX = scrollPane.content(好像是這個屬性),然後直接加載就OK.
如果引用不成功.可以加入targetPath函數(或_target屬性)試試
楚人无衣 2005-06-02
  • 打赏
  • 举报
回复
//自设之变量,为以后用--这个注释应该在eval("mcSlide" + i).swfPath = "slide" + (i+1).toString() + ".swf";后的,我标错了
楚人无衣 2005-06-02
  • 打赏
  • 举报
回复
我用了个迂回的方法解决,把复制mcSlide的Movie Clip的代码写在mcGuide中,如下,在mcGuide的第一帧:
initGuide();

function initGuide()
{
this.mcSlide.visible = false;
for (i=0; i<4; i++) {
duplicateMovieClip("mcSlide", "mcSlide"+i, i);
eval("mcSlide"+i).mcActiveHighlight._visible = false;
eval("mcSlide"+i).sTopic.text = "mcSlide"+i;
eval("mcSlide"+i).ldrSlide.loadMovie("tb"+(i+1).toString()+".swf");
eval("mcSlide"+i)._x = 73;
eval("mcSlide"+i).swfPath = "slide"+(i+1).toString()+".swf";
eval("mcSlide"+i)._y = i*(mcSlide._height+5)+70;
}
}
此mcGuide已设好连接标识符,亦为"mcGuide",然后Scrollpane的contentPath设为此"mcGuide"就可以了;也可在影片开始处动态设置:
initSwf();

function initSwf()
{
_root.spslide.contentPath = "mcGuide";
}
这样就要实现我的要求;多谢fklyzlwq(游骑兵),以后有Delphi问题可一起交流。

2,278

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧