美文网首页
MotionBuilder Python Script09 -

MotionBuilder Python Script09 -

作者: Houdinini | 来源:发表于2019-07-24 20:15 被阅读0次
    再来一张凑齐!

    最近发现了咪咕音乐可以听周杰伦的歌

    我们再来看一下MoBu中的Container的实现,与之前的BoxLayout 并不是一样的,我们来看一下

    一、Container

    Container 即容器,可以容纳许多小模块

    先来看一下UI效果

    UI效果

    官方这里展示了所有的图标模块形式,官方文档代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    # Copyright 2009 Autodesk, Inc.  All rights reserved.
    # Use of this software is subject to the terms of the Autodesk license agreement
    # provided at the time of installation or download, or which otherwise accompanies
    # this software in either electronic or hard copy form.
    #
    # Script description:
    # Create tool with a container and shows how to set icon in it.
    # Shows how to register callback (double click, onChange, DragAndDrop) in the container.
    #
    # Topic: FBVisualContainer, FBOrientation
    #
    
    from pyfbsdk import *
    from pyfbsdk_additions import *
    
    
    def OnChangeCallback(control, event):
        print control.GetSelection()
    
    
    def OnDoubleClickCallback(control, event):
        print control.GetSelection()
    
    
    def OnDragAndDropCallback(control, event):
        print event.State, event.PosX, event.PosY, event.Data[0], event.Data[1], event.Components
    
    
    def PopulateLayout(mainLyt):
        x = FBAddRegionParam(0, FBAttachType.kFBAttachLeft, "")
        y = FBAddRegionParam(0, FBAttachType.kFBAttachTop, "")
        w = FBAddRegionParam(0, FBAttachType.kFBAttachRight, "")
        h = FBAddRegionParam(0, FBAttachType.kFBAttachBottom, "")
        mainLyt.AddRegion("main", "main", x, y, w, h)
    
        lyt = FBHBoxLayout()
        mainLyt.SetControl("main", lyt)
    
        icons = ["devices_body.png", "devices_generalpurp.png", "devices_gloves.png", "devices_joystick.png",
                 "devices_keyboard.png", "devices_mouse.png"]
    
        containers = [FBVisualContainer(), FBVisualContainer()]
        for containerIndex, c in enumerate(containers):
            for i, icon in enumerate(icons):
                itemIndex = ((containerIndex * 7) + i);
                c.Items.append(("Item %d" % itemIndex, itemIndex))
                c.ItemIconSet(itemIndex, icon)
    
            c.ItemHeight = 70
            c.ItemWidth = 70
            c.OnDblClick.Add(OnDoubleClickCallback)
            c.OnChange.Add(OnChangeCallback)
            c.OnDragAndDrop.Add(OnDragAndDropCallback)
    
            lyt.AddRelative(c)
    
        containers[0].Orientation = FBOrientation.kFBHorizontal
        containers[1].Orientation = FBOrientation.kFBVertical
    
    
    def CreateTool():
        # Tool creation will serve as the hub for all other controls
        t = FBCreateUniqueTool("Container Tool Example")
        t.StartSizeX = 400
        t.StartSizeY = 400
        PopulateLayout(t)
    
        ShowTool(t)
    
    
    CreateTool()
    

    需要注意一下其中的Containers的方法操作,认真敲一敲(瞧一瞧),decomposition and refactor!

    二、结语

    有什么问题可以留言

    继续!

    共勉!

    相关文章

      网友评论

          本文标题:MotionBuilder Python Script09 -

          本文链接:https://www.haomeiwen.com/subject/mxwfrctx.html