您现在的位置: 圆点视线 >> 教程 >> 媒体动画 >> Director >> 文章正文
如何检测演员的载入进度         ★★★
如何检测演员的载入进度
作者:佚名  文章来源:圆点视线  点击数:  更新时间:2005-12-27 18:41:20 
 页面功能:【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口 【字体:
为了优化影片,我们经常需要预载演员。虽然通过使用相关的预载命令或设置演员本身的预载模式就能够达到这一目的,但不要忘记在进行预载时反馈一些相应的动态信息,以保持与用户之间的交互,也就是说,需要检测并显示演员的载入进度。

  通过使用idleLoadtag命令,便可以轻松做到这一点。这个命令允许通过使用一个列表来监测整个载入过程,因此我们可以在发出一个演员预载的命令之前用其来跟踪每个演员。由于只是测算列表项目的载入进度而不是测算演员本身的载入进度,所以无论对于几个小型演员的载入还是许多大型演员的载入,这个方法都非常有效。

  首先让我们来认识一下IdleLoadTag命令:

  语法:
  the idleLoadTag

  描述:
  系统属性,用于在系统等待时标记或识别加载队列的成员数量。这个属性为识别预加载一组成员提供了方便。此属性可以测试和设置。

  例如:
  这条语句将等待加载的成员数量设置为10。
  the idleLoadTag = 10

  下面就是一个控制载入演员列表的父代剧本实例,通过它能够获得演员载入的百分比。

property myDefaultIdleMode
property myLoadtag
property myIndexMax
property myIndex
property myMemberList
property myTimeout

on new (me, aListofMembers)
  me.mInitClass()
  me.mInitInstance()
  if aListofMembers.ilk = #list then me.mLoadMembers(aListofMembers)
  return me
end

on mDestroy (me)
  if myTimeout.ilk = #timeout then myTimeout.forget()
  myIndex = myIndexMax
  cancelIdleLoad(myLoadtag)
  the idleLoadMode = myDefaultIdleMode
end

on mLoadMembers (me, aListofMembers)
  myMemberList = aListofMembers.duplicate()
  myIndexMax = myMemberList.count
  myIndex = 0
  myTimeout = timeout(me.string).new(0, #nothing, me)
  the idleLoadMode = 3
end

on mGetPercentageDone (me)
  if myIndexMax > 0 then
    return (float(myIndex)/(myIndexMax))*100
  else
    return 100
  end if
end

on exitframe (me)
  if idleLoadDone(myLoadtag) then
    if me.mLoadNextMember() = 0 then
      myTimeout.target = VOID
      myTimeout.forget()
      the idleLoadMode = myDefaultIdleMode
    end if
  end if
end

on mLoadNextMember (me)
  if myIndex < myIndexMax then
    myIndex = myIndex + 1
    thisMember = myMemberList[myIndex]
    if thisMember.ilk = #member then preLoadMember thisMember
    return myIndex
  else
    return 0
  end if
end

on mInitClass (me)
  myDefaultIdleMode = the idleLoadMode
end

on mInitInstance (me)
  uniqueName = string(me).word[4]
  delete the last char of uniqueName
  myLoadTag = symbol(uniqueName)-0
  myTimeout = VOID
end


  将下面的Behavior赋予一个进度条,即可显示载入的百分比:

property myLoader

on beginSprite (me)
  myMembers = [member("blah1", member("blah1"), member("blah3"))
  myLoader = script("MemberLoadMgr_class").new(myMembers)
end

on exitframe (me)
  if myLoader.ilk = #instance then
    amntLoaded = myLoader.mGetPercentageDone()
    put "loading " & integer(amntLoaded) & "%"
    if amntLoaded = 100 then
      myLoader.mdestroy()
      myLoader = VOID
    end if
  end if
end


 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 文章录入:apoints    责任编辑:apoints  【字体:
 
  • 上一篇文章:

  •  
  • 下一篇文章:
  • 最新文章
    相关文章
    Director怎样制作自定义光标
    用Director控制动画GIF
    director应用技巧
    flash和director之间的沟通技巧
    Director中控制声音音量的几种方法
    Director8行为库的应用
    用Director创建涂色板
    认识Director中的Xtra
    对象列表的调用与删除
    用Lingo解决组合问题
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
     姓  名: 评 分: 1分 2分 3分 4分 5分
     评论内容: ·严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
    ·用户需对自己在使用本网服务过程中的行为承担法律责任
    ·本站管理员有权保留或删除评论内容。
    ·评论内容只代表机友个人观点,与本网站立场无关。
     
    最 新 推 荐
     
    百度主题推广
    最 新 热 门