zz使用Lingo控制QuickTime VR

ChenReal

一、设置QuickTime VR的属性

将此行为附于按钮之上,可以控制QTVR的下列属性:

  • Show Video:显示画面
  • Play Sound:播放声音
  • Controller:控制条
  • Preload:预读
  • DirectToStage:写屏
  • Streaming:流式
  • Loop:循环
**property** sourcemember,WhereTo,show_video,play_sound,preload_video,directtostage_video,Streaming_Prop,loop_video,Show_Controller

**---- Get Behavior Description List ---**

**on** **getPropertyDescriptionList** **me**
 QTMembersList=searchDigitalVideo (**me**)
 descriptionlist = [:]
 spriteassignlist=["Mouse Up","Mouse Down", "Mouse Enter","Mouse Leave"]
 frameassignlist=["Exit Frame","Enter Frame"]
 if QTMembersList.**count** > 0 **then**
  addprop descriptionlist,**#**sourcemember,[**#**comment:"QTVR Cast member :", \\
**#**format:#String,**#**range:QTMembersList,**#**default:QTMembersList[1]]
 else
  addprop descriptionlist,**#**sourcemember,[**#**comment:"QTVR Cast member :",**#**format:#Graphic,**#**default:1]
 end **if**
 addprop descriptionlist,**#**show_video,[**#**comment:"Set Show Video Property To :",**#**format:#Boolean,**#**default:True]
 addprop descriptionlist,**#**play_sound,[**#**comment:"Set Play Sound Property To :",**#**format:#Boolean,**#**default:True]
 addprop descriptionlist,**#**Show_Controller,[**#**comment:"Set Show Controller Property To :",**#**format:#Boolean,**#**default:True]
 addprop descriptionlist,**#**preload_video,[**#**comment:"Set Preload Property To :",**#**format:#Boolean,**#**default:True]
 addprop descriptionlist,**#**directtostage_video,[**#**comment:"Set DirectToStage Video Property To :",**#**format:#Boolean,**#**default:True]
 addprop descriptionlist,**#**Streaming_Prop,[**#**comment:"Set Streaming Property To :",**#**format:#Boolean,**#**default:True]
 addprop descriptionlist,**#**loop_video,[**#**comment:"Set Loop Property To :",**#**format:#Boolean,**#**default:True]
 if **the** **currentspritenum** <> 0 **then**
  addprop descriptionlist, **#**WhereTo, [**#**comment:"Where To Assign this Script ?", **#**format:#String,**#**range:spriteassignlist,**#**default:spriteassignlist[1]]
 else
  addprop descriptionlist, **#**WhereTo, [**#**comment:"Where To Assign this Script ?", **#**format:#String,**#**range:frameassignlist,**#**default:frameassignlist[2]]
 end **if**
 return descriptionlist
**end** **getPropertyDescriptionList**

**-- Get Behavior description --**

**on** **getBehaviorDescription**
 return "This Behavior Sets the True/False Properties of a Digital Video(QTVR) " & **RETURN** & **RETURN** & \\
"Parameters" & **RETURN** & \\
"* Source Digital Video Cast member." & **RETURN** & \\
"* True/False" & **RETURN** & \\
"* Where to attach this Script"
**end**

**-- Events --**

**on** **mouseUp** **me**
 if WhereTo="Mouse Up" **then**
  SetProperties
 end **if**
**end**

**on** **mouseDown** **me**
 if WhereTo="Mouse Down" **then**
  SetProperties
 end **if**
**end**

**on** **mouseEnter** **me**
 if WhereTo="Mouse Enter" **then**
  SetProperties
 end **if**
**end**

**on** **mouseLeave** **me**
 if WhereTo="Mouse Leave" **then**
  SetProperties
 end **if**
**end**

**on** **enterframe**
 if WhereTo="Enter Frame" **then**
  SetProperties
 end **if**
**end**

**on** **exitFrame**
 if WhereTo="Exit Frame" **then**
  SetProperties
 end **if**
**end**

**-- Custom Handlers --**

**on** SetProperties
 if **member**(sourcemember).**type** = **#**QuickTimeMedia **then**
  member(sourcemember).**controller**=Show_Controller
  member(sourcemember).**video**=show_video
  member(sourcemember).**sound**=play_sound
  member(sourcemember).**preload**=preload_video
  member(sourcemember).**DirectToStage**=directtostage_video
  member(sourcemember).streaming=Streaming_Prop
  member(sourcemember).**loop**=loop_video
 end **if**
**end**

**------ Availbale for both Frame & Sprite Script ------**

**on** **isOKToAttach** (**me**, aSpriteType, aSpriteNum)
 case aSpriteType **of**
  #graphic:
   return **true**
  #script:
   return **True**
 end **case**
**end** **isOKToAttach**

**------ Search for QT Member ------**

**on** searchDigitalVideo **me**
 AVIMembersList = []
 maxCastLib = **the** **number** **of** castLibs
 repeat **with** theCastLib = 1 **to** maxCastLib
  maxMember = **the** **number** **of** **members** **of** **castLib** theCastLib
  repeat **with** memberNumber = 1 **to** maxMember
   theMember = **member**(memberNumber, theCastLib)
   if theMember.**type** = **#**QuickTimeMedia **then**
    if theMember.**name** = **EMPTY** **then**
     AVIMembersList.**append**(theMember)
    else
     AVIMembersList.**append**(theMember.**name**)
    end **if**
   end **if**
  end **repeat**
 end **repeat**
 return AVIMembersList
**end**

二、控制QuickTime VR的热区

下面的代码用于实现对QTVR热区的控制:

**-- 电影角本**
**on** **startmovie**
 sprite(1).VRHotSpotEnterCallback = **#**MyEnterHotspot
 sprite(1).VRNodeEnterCallback = **#**MyEnterNode
 sprite(1).VRNodeExitCallback = **#**MyExitNode
 sprite(1).VRTriggerCallback = **#**MyVRTrigger
**end**

**on** MyEnterHotspot **me**, id
 set VRHotSpotSprite = **the** **spritenum** **of** **me**
 put "mouse entered hotspot" && id && "of sprite" && **sprite** VRHotSpotSprite
**end**

**on** MyEnterNode **me**, id
 **-- 在此加入命令行,点击热区后触发**
 set multiNodeVRspr = **the** **spritenum** **of** **me**
 put "mouse entered node" && id && "of sprite" && **sprite** multiNodeVRspr
**end**

**on** MyExitNode **me**, id
 set exitmultiNodeVRspr = **the** **spritenum** **of** **me**
 put "mouse exited node" && id && "of sprite" && **sprite** exitmultiNodeVRspr
**end**