07.12.2012 Views

Adobe Director Basics

Adobe Director Basics

Adobe Director Basics

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ADOBE DIRECTOR BASICS<br />

3D: Controlling appearance<br />

on GetRelativeTransform(aNode, aTargetNode)<br />

vTargetTransform = aTargetNode.getWorldTransform()<br />

vFrameOfReference = aNode.parent.getWorldTransform()<br />

vInverse = vFrameOfReference.inverse()<br />

vRelativeTransform = vInverse * vTargetTransform<br />

return vRelativeTransform<br />

end GetRelativeTransform<br />

An alternative approach is to change the parent of the big blue cone twice. Try the following commands in the Message<br />

window:<br />

-- Lingo syntax<br />

v3DMember = member("3D")<br />

vTarget = v3DMember.model("Red3")<br />

vModel = v3DMember.model("Blue3")<br />

vParent = vModel.parent<br />

vModel.parent = v3DMember.group("World")<br />

vModel.transform = vTarget.getWorldTransform()<br />

vParent.addChild(vModel, #preserveWorld)<br />

// JavaScript syntax<br />

v3DMember = member("3D");<br />

vTarget = v3DMember.getPropRef("model", 3);<br />

vModel = v3DMember.getPropRef("model", 6);<br />

vParent = vModel.parent;<br />

vModel.parent = v3DMember.getPropRef("group", 1);<br />

vModel.transform = vTarget.getWorldTransform();<br />

vParent.addChild(vModel, symbol("preserveWorld"));<br />

userData<br />

All nodes have a property list named userData attached to them.<br />

-- Lingo syntax<br />

put member("3D").model(1).userData<br />

-- [:]<br />

// JavaScript syntax<br />

trace(member("3D").getPropRef("model", 1).userData);<br />

// <br />

Permanence of the contents of the userData list<br />

Depending on the third-party 3D design software used, your 3D designer may be able to add data to the userData lists<br />

of the various nodes when exporting the 3D world to W3D format. In this case, that data will be available to you<br />

permanently both during authoring and at runtime.<br />

In <strong>Director</strong> 11.5, any data that you add to a node's userData list while authoring will not be saved with the 3D world,<br />

even if you use the member3D.saveWorld() command first. In other words, changes made to a node's userData list<br />

are available only for the current session.<br />

In <strong>Director</strong> 11.5, you cannot set the userData list to a Lingo property list. This provokes an "Access not supported"<br />

script error. To change the contents of the userData list, you must act directly on the built-in list.<br />

Also, in <strong>Director</strong> 11.5, you cannot use bracket access to get or set values in the userData list. If you try to set a value<br />

for bracket access, a script error occurs (Access not supported). When you use bracket access to retrieve a value, a<br />

pointer to the entire list is returned. However, you can create a pointer to the list and use all the standard list methods<br />

on that.<br />

When working directly on a Node.userData lists, some standard list methods are not supported.<br />

Last updated 8/26/2011<br />

99

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!