ZH-CN/guiCreateWindow: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 11: Line 11:
===必填参数===
===必填参数===
[[Image:gui-window.png|frame|Example Window.]]
[[Image:gui-window.png|frame|Example Window.]]
*'''x:''' A float of the 2D x position of the GUI window on a player's screen.  This is affected by the ''relative'' argument.
*'''x:''' 玩家屏幕上图形用户界面窗口的2D x 位置的浮动.  This is affected by the ''relative'' argument.
*'''y:''' A float of the 2D y position of the GUI window on a player's screen. This is affected by the ''relative'' argument.
*'''y:''' 玩家屏幕上GUI窗口的2D y 位置的浮动. This is affected by the ''relative'' argument.
*'''width:''' A float of the width of the GUI window. This is affected by the ''relative'' argument.
*'''width:''' GUI窗口宽度的浮动. This is affected by the ''relative'' argument.
*'''height:''' A float of the height of the GUI window. This is affected by the ''relative'' argument.
*'''height:''' GUI窗口高度的浮动. This is affected by the ''relative'' argument.
*'''titleBarText:''' A string of the text that will be displayed in the title bar of the window.
*'''titleBarText:''' 将显示在窗口标题栏中的文本字符串.
*'''relative:''' This is whether sizes and positioning are relativeIf this is ''true'', then all x,y,width,height floats must be between 0 and 1, representing sizes/positions as a fraction of the screen size. If ''false'', then the size and co-ordinates are based on client's resolution, accessible using [[guiGetScreenSize]].
*'''relative:''' 尺寸和位置是否是相对的如果这是“true”,则所有x、y、width和height浮动必须介于0和1之间, 将 大小/位置 表示为屏幕大小的一部分. 如果“false”,则大小和坐标基于客户端的分辨率,可使用[[guiGetScreenSize]]访问.


===返回值===
===返回值===
Returns a gui window element if it was created successfully, false otherwise.
如果gui窗口元素创建成功,则返回该元素,否则返回false.


==示例==  
==示例==  
'''示例 1:''' This example creates a information window and adds two tabs to a "tabPanel" tabpanel, and adds some other gui elements to it.
'''示例 1:''' 本例创建了一个信息窗口,并向“tabPanel”tabPanel添加了两个选项卡,并向其中添加了一些其他gui元素
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
local myWindow = guiCreateWindow ( 0, 0, 0.5, 0.4, "Information", true )  -- create a window which has "Information" in the title bar.
local myWindow = guiCreateWindow ( 0, 0, 0.5, 0.4, "Information", true )  -- 创建一个在标题栏中有“信息”的窗口.
local tabPanel = guiCreateTabPanel ( 0, 0.1, 1, 1, true, myWindow )      -- create a tab panel which fills the whole window
local tabPanel = guiCreateTabPanel ( 0, 0.1, 1, 1, true, myWindow )      -- 创建一个填充整个窗口的选项卡面板
local tabMap = guiCreateTab( "Map Information", tabPanel )                -- create a tab named "Map Information" on 'tabPanel'
local tabMap = guiCreateTab( "Map Information", tabPanel )                -- 在“tabPanel”上创建一个名为“Map Information”的选项卡
local tabHelp = guiCreateTab( "Help", tabPanel )                          -- create another tab named "Help" on 'tabPanel'
local tabHelp = guiCreateTab( "Help", tabPanel )                          -- 在“tabPanel”上创建另一个名为“Help”的选项卡


-- adds a label (text) to each tab
-- 向每个选项卡添加标签(文本)
guiCreateLabel(0.02, 0.04, 0.94, 0.2, "This is information about the current map", true, tabMap)
guiCreateLabel(0.02, 0.04, 0.94, 0.2, "这是有关当前地图的信息", true, tabMap)
guiCreateLabel(0.02, 0.04, 0.94, 0.92, "This is help text.", true, tabHelp)
guiCreateLabel(0.02, 0.04, 0.94, 0.92, "这是帮助文本.", true, tabHelp)
</syntaxhighlight>
</syntaxhighlight>


'''示例 2:''' This example creates a weapon selection screen, complete with a window, gridlist and a button. Users can select a shotgun or a machine gun. The window is not movable or sizable.
'''示例 2:''' 这个例子创建了一个武器选择屏幕,包括一个窗口、网格列表和一个按钮. 用户可以选择猎枪或机枪. 窗口不能移动,也不能调整大小.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
--Setup some tables
--设置一些表格


shotguns = {
shotguns = {
Line 51: Line 51:
function setupWeaponSelection ( theResource )
function setupWeaponSelection ( theResource )
       -- getResourceRootElement(getThisResource()) at the bottom means it will only create the gui on this resource start
       -- getResourceRootElement(getThisResource()) at the bottom means it will only create the gui on this resource start
       -- Create a window for our spawnscreen, with the title "Select your weapons".
       -- 为我们的屏幕创建一个窗口,标题为“选择你的武器”.
       spawnScreenMenu = guiCreateWindow ( 0.15, 0.33, 0.7, 0.34, "Select your weapons", true )
       spawnScreenMenu = guiCreateWindow ( 0.15, 0.33, 0.7, 0.34, "Select your weapons", true )
       -- create an OK button to allow the user to confirm their selections, and attach it to the confirmSelection function
       -- 创建一个OK按钮,允许用户确认他们的选择,并将其附加到confirmSelection函数
       spawnScreenOKButton = guiCreateButton ( 0.4, 0.85, 0.20, 0.15, "OK", true, spawnScreenMenu )
       spawnScreenOKButton = guiCreateButton ( 0.4, 0.85, 0.20, 0.15, "OK", true, spawnScreenMenu )
       -- ensure the user can't move or resize our spawnscreen.
       -- 确保用户不能移动或调整屏幕大小.
       guiWindowSetMovable ( spawnScreenMenu, false )
       guiWindowSetMovable ( spawnScreenMenu, false )
       guiWindowSetSizable ( spawnScreenMenu, false )
       guiWindowSetSizable ( spawnScreenMenu, false )
       -- create our gridlist, which fills up most of the window.
       -- 创建我们的gridlist,它占据了大部分窗口.
       spawnScreenGridList = guiCreateGridList ( 0, 0.1, 1, 0.9, true, spawnScreenMenu )
       spawnScreenGridList = guiCreateGridList ( 0, 0.1, 1, 0.9, true, spawnScreenMenu )
       guiGridListSetSelectionMode ( spawnScreenGridList, 2 ) -- ensure the selection mode is one per column
       guiGridListSetSelectionMode ( spawnScreenGridList, 2 ) -- ensure the selection mode is one per column
       -- Since we have 2 sets of weapons, create a column for shotguns and one for machine guns
       -- 既然我们有两套武器,就为散弹枪和机关枪创建一个纵队
       guiGridListAddColumn ( spawnScreenGridList, "Shotguns", 0.3 )
       guiGridListAddColumn ( spawnScreenGridList, "Shotguns", 0.3 )
       guiGridListAddColumn ( spawnScreenGridList, "Machine guns", 0.3 )
       guiGridListAddColumn ( spawnScreenGridList, "Machine guns", 0.3 )
       -- next, we loop through our handguns table to add handgun items to the gridlist
       -- 接下来,我们循环遍历handguns表,将handgun项添加到gridlist中
       for key,weaponName in pairs(shotguns) do
       for key,weaponName in pairs(shotguns) do
             -- add a new row to our gridlist each time
             -- 每次向我们的gridlist添加一个新行
             local row = guiGridListAddRow ( spawnScreenGridList )
             local row = guiGridListAddRow ( spawnScreenGridList )
             -- next, we set that row's text to the weapon name. Column is 1 since the "Shotguns" column was created first.
             -- 接下来,我们将该行的文本设置为武器名称。列是1,因为“Shotguns”列是首先创建的.
             guiGridListSetItemText ( spawnScreenGridList, row, 1, weaponName, false, false )
             guiGridListSetItemText ( spawnScreenGridList, row, 1, weaponName, false, false )
       end
       end
       -- we repeat the process for other weapon list, changing the column number
       -- 我们对其他武器列表重复这个过程,改变列号
       row = 0
       row = 0
       for key,weaponName in pairs(machineGun) do
       for key,weaponName in pairs(machineGun) do
             -- we don't need to create new rows as that was done in the previous loop
             -- 我们不需要像在上一个循环中那样创建新行
             -- we just set the row's text to the weapon name. Column is 2 since the "Machine guns" column was created second.
             -- 我们只是将行的文本设置为武器名称.列是2,因为“机枪”列是第二个创建的.
             guiGridListSetItemText ( spawnScreenGridList, row, 2, weaponName, false, false )
             guiGridListSetItemText ( spawnScreenGridList, row, 2, weaponName, false, false )
             row = row + 1 -- increase the row number
             row = row + 1 -- 增加行号
       end
       end
end
end

Latest revision as of 11:06, 7 February 2021

此函数用于创建新的GUI窗口. This provides a base for other gui elements to be created within. However, windows do not have a parent and cannot be created in any GUI elements.

语法

element guiCreateWindow ( float x, float y, float width, float height, string titleBarText, bool relative )

OOP 语法 什么是OOP?

方法: GuiWindow(...)

必填参数

Example Window.
  • x: 玩家屏幕上图形用户界面窗口的2D x 位置的浮动. This is affected by the relative argument.
  • y: 玩家屏幕上GUI窗口的2D y 位置的浮动. This is affected by the relative argument.
  • width: GUI窗口宽度的浮动. This is affected by the relative argument.
  • height: GUI窗口高度的浮动. This is affected by the relative argument.
  • titleBarText: 将显示在窗口标题栏中的文本字符串.
  • relative: 尺寸和位置是否是相对的. 如果这是“true”,则所有x、y、width和height浮动必须介于0和1之间, 将 大小/位置 表示为屏幕大小的一部分. 如果“false”,则大小和坐标基于客户端的分辨率,可使用guiGetScreenSize访问.

返回值

如果gui窗口元素创建成功,则返回该元素,否则返回false.

示例

示例 1: 本例创建了一个信息窗口,并向“tabPanel”tabPanel添加了两个选项卡,并向其中添加了一些其他gui元素

local myWindow = guiCreateWindow ( 0, 0, 0.5, 0.4, "Information", true )  -- 创建一个在标题栏中有“信息”的窗口.
local tabPanel = guiCreateTabPanel ( 0, 0.1, 1, 1, true, myWindow )       -- 创建一个填充整个窗口的选项卡面板
local tabMap = guiCreateTab( "Map Information", tabPanel )                -- 在“tabPanel”上创建一个名为“Map Information”的选项卡
local tabHelp = guiCreateTab( "Help", tabPanel )                          -- 在“tabPanel”上创建另一个名为“Help”的选项卡

-- 向每个选项卡添加标签(文本)
guiCreateLabel(0.02, 0.04, 0.94, 0.2, "这是有关当前地图的信息", true, tabMap)
guiCreateLabel(0.02, 0.04, 0.94, 0.92, "这是帮助文本.", true, tabHelp)

示例 2: 这个例子创建了一个武器选择屏幕,包括一个窗口、网格列表和一个按钮. 用户可以选择猎枪或机枪. 窗口不能移动,也不能调整大小.

--设置一些表格

shotguns = {
      "chrome",
      "sawn-off",
      "combat"
}

machineGun = {
      "m4",
      "ak-47"
}

function setupWeaponSelection ( theResource )
      -- getResourceRootElement(getThisResource()) at the bottom means it will only create the gui on this resource start
      -- 为我们的屏幕创建一个窗口,标题为“选择你的武器”.
      spawnScreenMenu = guiCreateWindow ( 0.15, 0.33, 0.7, 0.34, "Select your weapons", true )
      -- 创建一个OK按钮,允许用户确认他们的选择,并将其附加到confirmSelection函数
      spawnScreenOKButton = guiCreateButton ( 0.4, 0.85, 0.20, 0.15, "OK", true, spawnScreenMenu )
      -- 确保用户不能移动或调整屏幕大小.
      guiWindowSetMovable ( spawnScreenMenu, false )
      guiWindowSetSizable ( spawnScreenMenu, false )
      -- 创建我们的gridlist,它占据了大部分窗口.
      spawnScreenGridList = guiCreateGridList ( 0, 0.1, 1, 0.9, true, spawnScreenMenu )
      guiGridListSetSelectionMode ( spawnScreenGridList, 2 ) -- ensure the selection mode is one per column
      -- 既然我们有两套武器,就为散弹枪和机关枪创建一个纵队
      guiGridListAddColumn ( spawnScreenGridList, "Shotguns", 0.3 )
      guiGridListAddColumn ( spawnScreenGridList, "Machine guns", 0.3 )
      -- 接下来,我们循环遍历handguns表,将handgun项添加到gridlist中
      for key,weaponName in pairs(shotguns) do
            -- 每次向我们的gridlist添加一个新行
            local row = guiGridListAddRow ( spawnScreenGridList )
            -- 接下来,我们将该行的文本设置为武器名称。列是1,因为“Shotguns”列是首先创建的.
            guiGridListSetItemText ( spawnScreenGridList, row, 1, weaponName, false, false )
      end
      -- 我们对其他武器列表重复这个过程,改变列号
      row = 0
      for key,weaponName in pairs(machineGun) do
            -- 我们不需要像在上一个循环中那样创建新行
            -- 我们只是将行的文本设置为武器名称.列是2,因为“机枪”列是第二个创建的.
            guiGridListSetItemText ( spawnScreenGridList, row, 2, weaponName, false, false )
            row = row + 1 -- 增加行号
      end
end
addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), setupWeaponSelection )

See Also

General functions

Browsers

Buttons

Checkboxes

Comboboxes

Edit Boxes

Gridlists

Memos

Progressbars

Radio Buttons

Scrollbars

Scrollpanes

Static Images

Tab Panels

Tabs

Text Labels

Windows

Input

GUI