-->


”Anda Berhasil Bukan Karena Mereka Tapi Karena Usaha Anda Sendiri“

Sabtu, 19 Oktober 2013

Cara Membuat Tulisan 3D di Macromedia Director


Awal sebelum pakai Coding 3D (About)


Langkahnya:
  1.  Klik kanan tulisan target lalu klik script
  2. Copykan script tersebut di Tulisan yang akan Sahabat jadikan Tulisan 3D.
  3. Propertis dan atur bentuk efeknya lalu atur kecepatan efek tulisan tersebut
  4. selesai
  5. Hasilnya










Hasil Tulisan 3D (About)



Codingnya yang dari di tunjuk - akhir 



------------------------------------------------------------------------------- --Summary---------------------------------------------------------------------- ------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --Properties-------------------------------------------------------------------- -------------------------------------------------------------------------------- --Author Defined Properties ----------------------------------- property pAxisRotation -- String. Which axis (X,Y or Z) to rotate about. property pModel --------- 3D model. Which model of the scene to rotate. property pSpeed --------- Integer. The rate of rotation. ----------------------------------- --General Properties ----------------------------------- property pMember -- Member. The member of this sprite. property pModelTransformOriginList -- List. Contains the original starting transforms -- for each model. -------------------------------------------------------------------------------- --Sprite Handlers--------------------------------------------------------------- -------------------------------------------------------------------------------- on beginSprite(me) pMember = sprite(me.spriteNum).member if pMember.type = #text then if pMember.displayMode = #modeNormal then me.textTypeAlert() exit end if end if if voidP(pModel) then pModel = pMember.model[1].name --pModel would be void if there is only one model in the scene. if pModel = "Rotate All" then pModelTransformOriginList = me.saveModelTransform(pMember, #all) else pModelTransformOriginList = me.saveModelTransform(pMember, pModel) end if end beginSprite ----------------------------------- --PURPOSE: General clean up. --ACCEPTS: 'me' as an instance of this script. --RETURNS: Nothing. ----------------------------------- on endSprite(me) me.setModelTransform(pModelTransformOriginList) end endSprite -------------------------------------------------------------------------------- --Event Handlers---------------------------------------------------------------- -------------------------------------------------------------------------------- on enterFrame(me) if pModel = "Rotate All" then me.rotateAllModels() else me.rotateSingleModel() end if end enterFrame -------------------------------------------------------------------------------- --Private Custom Handlers------------------------------------------------------- -------------------------------------------------------------------------------- on textTypeAlert(me) tString1 = "The behavior indicated below requires that its text member's display be set to 3D Mode. " & \ "This sprite's member is not set that way. " & \ "Please correct this." & RETURN & RETURN tString2= "Sprite" & ":" && string(me.spriteNum) & RETURN & RETURN tString3 = "Behavior" & ":" && QUOTE & me.getScriptName() & QUOTE alert(me.typeset(tString1 & tString2 & tString3)) end textTypeAlert --------------------------------- --PURPOSE: Sets a model's transform to a previously stored value. --ACCEPTS: 'me' as an instance of this script. -- 'aModel' as a string indicating a specific model name. Or it is the -- symbol #all indicating that every model should be set. --RETURNS: Nothing. ----------------------------------- on resetModelTransform(me, aModel) repeat with j = 1 to pModelTransformOriginList.count tModel = pModelTransformOriginList.getPropAt(j) pMember.model(tModel).transform = pModelTransformOriginList.getAt(j) end repeat end resetModelTransform ----------------------------------- on rotateAllModels(me) repeat with j = 1 to me.getModels(pMember, []).count case pAxisRotation of "X": me.rotateX(j) "Y": me.rotateY(j) "Z": me.rotateZ(j) end case end repeat end rotateAllModels ----------------------------------- on rotateSingleModel(me) case pAxisRotation of "X": me.rotateX(pModel) "Y": me.rotateY(pModel) "Z": me.rotateZ(pModel) end case end rotateSingleModel ----------------------------------- on rotateX(me, aModel) case pMember.type of #text: tCenterPointAndRadius = pMember.model[1].boundingSphere tCenter = tCenterPointAndRadius[1] pMember.model[1].rotate(tCenter, vector(1,0,0), pSpeed,#world) otherwise: pMember.model(aModel).rotate(pSpeed,0,0) end case end rotateX --------------------------------- on rotateY(me, aModel) case pMember.type of #text: tCenterPointAndRadius = pMember.model[1].boundingSphere tCenter = tCenterPointAndRadius[1] pMember.model[1].rotate(tCenter, vector(0,1,0), pSpeed,#world) otherwise: pMember.model(aModel).rotate(0,pSpeed,0) end case end rotateY --------------------------------- on rotateZ(me, aModel) case pMember.type of #text: tCenterPointAndRadius = pMember.model[1].boundingSphere tCenter = tCenterPointAndRadius[1] pMember.model[1].rotate(tCenter, vector(0,0,1), pSpeed,#world) otherwise: pMember.model(aModel).rotate(0,0,pSpeed) end case end rotateZ --------------------------------- --PURPOSE: Saves a duplicate of a model's transform. --ACCEPTS: 'me' as an instance of this script. -- 'aModel' as a string indicating a specific model name. Or it is the -- symbol #all indicating that every model's transform should be saved. --RETURNS: Nothing. ----------------------------------- on saveModelTransform(me, aMember, aModel) tModelTransformOriginList = [:] tList = me.getModels(aMember, []) if aModel = #all then repeat with j in tList tModelTransformOriginList.addProp(j, duplicate(aMember.model(j).transform)) end repeat else tModelTransformOriginList.addProp(aModel, duplicate(aMember.model(aModel).transform)) end if return(tModelTransformOriginList) end saveModelTransform --------------------------------- --PURPOSE: Sets a model's transform to a previously stored value. --ACCEPTS: 'me' as an instance of this script. -- 'aList' as a property list. An element contains a model name -- and an associated transform. --RETURNS: Nothing. ----------------------------------- on setModelTransform(me, aList) repeat with j = 1 to aList.count tModel = aList.getPropAt(j) pMember.model(tModel).transform = aList.getAt(j) end repeat end setModelTransform -------------------------------------------------------------------------------- --Predefined Handlers----------------------------------------------------------- -------------------------------------------------------------------------------- --PURPOSE: Determines whether the behavior can be dropped onto a sprite in the score. --ACCEPTS: 'aScript' as a reference to a script member. -- 'aSpriteType' as a symbol. It indicates the type of sprite attempting -- to be dropped on to. -- 'aSpriteNum' as an integer. Indicates the channel of the sprite being -- dropped on to. --RETURNS: True if the behavior is allowed to be dropped on the sprite or score, -- false otherwise. ----------------------------------- on isOKtoAttach(aScript, aSpriteType, aSpriteNum) case aSpriteType of #Graphic: case sprite(aSpriteNum).member.type of #shockwave3d: if aScript.getModels(sprite(aSpriteNum).member, []).count > 0 then return(TRUE) else return(FALSE) end if #text: if sprite(aSpriteNum).member.displayMode = #mode3D then return(TRUE) end if end case #script: return(FALSE) end case return(FALSE) end isOKtoAttach ----------------------------------- --PURPOSE: Allows the user a dialog box access to the behavior's properties. --ACCEPTS: 'aScript' as a reference to a script member. --RETURNS: 'TGPDList' as a property list containing author definable behavior properties ----------------------------------- on getPropertyDescriptionList(aScript) if the currentSpriteNum > 0 then tGPDList = [:] tGPDList[#pSpeed] = \ [#comment:"Rotation speed",\ #format: #integer,\ #range:[#min:-20, #max:20],\ #default: 5] tList = ["Rotate All"] tList = aScript.getModels(sprite(the currentSpriteNum).member, tList) if tList.count > 2 then tGPDList[#pModel] = \ [#comment:"Which model?",\ #format: #string,\ #range: tList,\ #default: tList[1]] else nothing --There is only one model in the member. So, don't offer a selection --as to which model to rotate. end if tGPDList[#pAxisRotation] = \ [#comment:"Which axis to rotate about",\ #format: #string,\ #range:["X", \ "Y", \ "Z"],\ #default: "X"] return(tGPDList) end if end getPropertyDescriptionList ----------------------------------- --PURPOSE: Provides a tooltip in the behavior library palette. --ACCEPTS: 'aScript' as a reference to a script member. --RETURNS: 'tString' as a string. ----------------------------------- on getBehaviorToolTip(aScript) tString1 = "Automatically rotates a model" & RETURN & RETURN tString2 = "-" && "Type" && ":" && "Independent Action" & RETURN tString3 = "-" && "Dependencies" && ":" && "None" return(tString1 & tString2 & tString3) end getBehaviorToolTip ----------------------------------- --PURPOSE: Provides a behavior description in the behavior inspector. --ACCEPTS: 'aScript' as a reference to a script member. --RETURNS: 'tString' as a string. ----------------------------------- on getBehaviorDescription(aScript) tString1 = "AUTOMATIC MODEL ROTATION" & RETURN & RETURN & \ "Automatically rotates a model about an axis. " & \ "For multiple axes, drop multiple instances of the " & QUOTE & "Automatic Model Rotation" & QUOTE & " behavior on the sprite and select the desired axes." & RETURN & RETURN & \ "This independent behavior does not require a trigger." & RETURN & RETURN & \ "ACTIONS AND THEIR REQUIRED TRIGGERS:" & RETURN & \ "- None " & RETURN & RETURN & \ "PARAMETERS:" & RETURN & \ "- None" & RETURN & RETURN & \ "PERMITTED SPRITE TYPES:" & RETURN & \ "- Shockwave 3D" & RETURN & \ "- 3D Text" return(tString1) end getBehaviorDescription -------------------------------------------------------------------------------- --Predefined Handler Support---------------------------------------------------- -------------------------------------------------------------------------------- --PURPOSE: Gets the names of each model in a member. --ACCEPTS: 'aScript' as a reference to a script member. -- 'aMember' as a member. -- 'aList' that will be used to store the names. --RETURNS: 'aList' containing the model names. ----------------------------------- on getModels(aScript, aMember, aList) repeat with j = 1 to aMember.model.count if string(aMember.model[j]) contains "model" then aList.add(aMember.model[j].name) end if end repeat return(aList) end getModels ----------------------------------- --PURPOSE: Determine the name of this script. --ACCEPTS: 'me' as an instance of this script. --RETURNS: 'tName' as a string. ----------------------------------- on getScriptName(me) tScriptName = string(me.script) tName = EMPTY repeat with tWord = 2 to tScriptName.word.count tName = tName && tScriptName.word[tWord] end repeat tName = tName.char[3..(tName.char.count) - 2] return(tName) end getScriptName ----------------------------------- --PURPOSE: Inserts RETURNs into a string so that the string is of a specific -- number of characters wide. --ACCEPTS: 'aScript' as a reference to a script member. -- 'aString' as a string to be formatted. --RETURNS: 'tNewString' as a formatted string. ----------------------------------- on typeSet(aScript, aString) tCharLimit = 50 --Limit the character width to this value. tTempChunk = aString.char[1..tCharLimit] tNewString = EMPTY repeat while tTempChunk <> EMPTY tTempChunk = aString.char[1..tCharLimit] --Grab a substring of length tCharLimit. tCount = tTempChunk.char.count if tTempChunk.char[tCharLimit] = " " then --The substring ends with a space. So, there are no partial words. tStopWord = tTempChunk.word.count else if aString.char[tCharLimit + 1] = " " then --The first character after the substring is a space. --So, there are no partial words. tStopWord = tTempChunk.word.count else if tTempChunk.char.count < tCharLimit then --The substring is shorted than tCharLimit characters so use --the whole substring as is. tStopWord = tTempChunk.word.count else --The string goes beyond tCharLimit characters and would break in the --middle of a word as is. So, do not use the last word. tStopWord = tTempChunk.word.count - 1 end if tTempChunk = aString.word[1..tStopWord] tNewString = tNewString & RETURN & tTempChunk delete aString.word[1..tStopWord] end repeat return(tNewString) end typeSet -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --Do not alter or add to the comments and script below this point! -------------------------------------------------------------------------------- --beginInterfaceBlock --endInterfaceBlock

Tidak ada komentar:

Posting Komentar