2016-09-29 8 views
0

変数をあるスコープから別のスコープに渡すにはどうすればよいですか?ユーザーがオブジェクトを選択したときにのみオブジェクトが定義されるので、私はそれを事前に宣言できません。実際にこのコードは、別のスコープで定義されたローカル変数を読み込もうとするため失敗します。擬似コードでmaxscriptのスコープ変数

:選択したオブジェクト

そして、実際のコード2.copy

1.pickオブジェクト :することができますようにこの場合

macroScript Variables 
category:"Stackoverflow" 
toolTip:"" 

(

rollout Roll "Scopes" 
(
pickbutton pickobj "Pick object" 
on pickobj picked objectPicked do if isValidNode objectPicked do pickobj.tooltip = "You picked " + objectPicked.name 

button pass "Pass the variable" 
on pass pressed do (

newObj = copy objectPicked 
print newObj 

) 
) 
createDialog Roll 300 80 

) 

答えて

2

、それは本当に簡単ですpickButtonのオブジェクトプロパティにアクセスします。

rollout Roll "Scopes" 
(
    pickButton pickObj "Pick object" autoDisplay:true 
    button pass "Pass the variable" 

    on pickObj picked objectPicked do 
     if isValidNode objectPicked do 
      pickobj.tooltip = "You picked " + objectPicked.name 

    on pass pressed do 
    (
     local newObj = copy pickobj.object 
     print newObj 
    ) 
) 
createDialog Roll 300 80 

でも、アクセス可能なスコープにある変数にノードを割り当てることができます。

rollout Roll "Scopes" 
(
    local pickedObj 

    pickbutton pickobj "Pick object" autoDisplay:true 
    button pass "Pass the variable" 

    on pickobj picked objectPicked do 
     if isValidNode objectPicked do 
     (
      pickedObj = objectPicked 
      pickobj.tooltip = "You picked " + objectPicked.name 
     ) 

    on pass pressed do 
    (
     local newObj = copy pickedObj 
     print newObj 
    ) 
) 
createDialog Roll 300 80