PHP-Raylib 视 频 游 戏 编 程 库 - GUI 篇

AI摘要
Raylib 0.0.7+ 新增 GUI 类,性能优于传统 GUI 但弱于 Web UI。示例演示了按钮、消息框、下拉框和列表视图等控件的实现方法,通过主循环实现界面交互。

0.0.7+ 新增了gui类,传统的gui肯定比不上我们写web的ui那么好,但是性能上会比较好一点!

示例

<?php

require dirname(__DIR__) . "/vendor/autoload.php"; // 根据你的实际情况

use Kingbes\Raylib\Core; //核心
use Kingbes\Raylib\Utils; // 工具类
use Kingbes\Raylib\Gui; // gui类

Core::initWindow(800, 450, "Hello World"); //初始化窗口

Core::setTargetFPS(60); //设置目标帧率

// 白色
$white = Utils::color(255, 255, 255);

// 按钮位置大小
$recBtn = Utils::rectangle(24, 24, 120, 30);

// 消息盒子位置大小
$recMsgBox = Utils::rectangle(85, 70, 250, 100);

// 消息盒子开关
$showMsgBox = false;

// 下拉框开关
$dropdownBox = false;
// 下拉框索引
$dropdownBoxIndex = 0;

$text = "Hello World";

// 列表视图滚动索引
$listViewScrollIndex = 0;
// 列表视图活动索引
$listViewActive = 0;

// 主循环
while (!Core::windowShouldClose()) {
    Core::beginDrawing(); //开始绘制

    Core::clearBackground($white); // 清除背景

    // 按钮控件控件
    if (Gui::button($recBtn, "#191#Show Message")) { // 按钮被点击
        $showMsgBox = true;
    }

    if ($showMsgBox) { // 如果消息盒子被打开
        // 消息盒子控件
        $res = Gui::messageBox($recMsgBox, "Message Box", "This is a message box.", "Nice;Cool");
        if ($res >= 0) { // 如果用户点击了按钮
            // 根据用户点击的按钮,执行不同的操作
            echo "用户点击了按钮: $res\n";
            $showMsgBox = false;
        }
    }

    // 下拉框控件
    $tab = Gui::dropdownBox(
        Utils::rectangle(24, 120, 250, 30),
        "Tab 1;Tab 2",
        $dropdownBoxIndex,
        $dropdownBox
    );
    if ($tab) {
        $dropdownBox = !$dropdownBox;
    }

    // 列表视图控件
    Gui::listView(
        Utils::rectangle(24, 220, 250, 150),
        "$text;Bulbasaur;#18#Squirtel;Pikachu;Eevee;Pidgey",
        $listViewScrollIndex,
        $listViewActive
    );

    Core::endDrawing(); // 结束绘制
}

// 关闭窗口
Core::closeWindow();

本作品采用《CC 协议》,转载必须注明作者和本文链接
放弃总是很容易,但坚持是痛苦的!
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!