Flash to Unity UniSWF插件入门级教程代码

2015年03月19日 10:51 0 点赞 0 评论 更新于 2025-11-21 17:39

以下是一个使用 UniSWF 插件实现动态 UI 的示例代码,通过该代码可以学习如何在 Unity 中使用 UniSWF 插件加载 SWF 文件并创建动态的用户界面。

using UnityEngine;
using System.Collections;
using pumpkin.events;
using pumpkin.display;
using System.Collections.Generic;
using pumpkin.ui;
using pumpkin.text;
using pumpkin.logging;

public class TestDynamicUI : MonoBehaviour
{
// 舞台对象
private Stage stage;
// 主影片剪辑对象
private MovieClip mc;
// 存储键值对的字典
private Dictionary<string, string> dictionary;

// 初始化方法,在脚本实例被启用时调用
void Start()
{
// 初始化字典
dictionary = new Dictionary<string, string>();
dictionary["AAA"] = "A - A - A";
dictionary["BBB"] = "B - B - B";
dictionary["CCC"] = "C - C - C";
dictionary["DDD"] = "D - D - D";
dictionary["EEE"] = "E - E - E";

// 检查 MovieClipOverlayCameraBehaviour 实例是否存在
if (!MovieClipOverlayCameraBehaviour.instance)
{
return;
}

// 获取舞台对象
stage = MovieClipOverlayCameraBehaviour.instance.stage;

// 可以取消注释以调试舞台的宽度和高度
// Debug.Log(stage.stageWidth + "---" + stage.stageHeight);

// 创建主影片剪辑对象
mc = new MovieClip("uniSWF/Examples/Tutorial 06 - Dynamic UI/swf/tut06_ui_assets.swf:panel_info");
// 跳转到并停止在第 1 帧
mc.gotoAndStop(1);

// 将影片剪辑居中到舞台
ScreenUtils.center(stage, mc);
// 水平向右偏移 100 个单位
mc.x = mc.x + 100;

// 按钮计数器
int counts = 0;
// 按钮之间的垂直间距
int button_distance = 15;

// 遍历字典中的每个键值对
foreach (KeyValuePair<string, string> obj in dictionary)
{
// 创建按钮影片剪辑对象
MovieClip button = new MovieClip("uniSWF/Examples/Tutorial 06 - Dynamic UI/swf/tut06_ui_assets.swf:btn_generic");
// 跳转到并停止在第 1 帧
button.gotoAndStop(1);

// 设置按钮的水平位置
button.x = mc.x - 200;
// 设置按钮的垂直位置
button.y = mc.y + (counts * (button.height + button_distance));
// 设置按钮的名称
button.name = obj.Key.ToString();

// 获取按钮上的文本字段
TextField button_name = button.getChildByName<TextField>("txt");
// 设置文本字段的文本为按钮名称
button_name.text = button.name;

// 为按钮添加点击事件监听器
button.addEventListener(MouseEvent.CLICK, OnButtonClick);
// 为按钮添加鼠标进入事件监听器
button.addEventListener(MouseEvent.MOUSE_ENTER, OnButtonEnter);
// 为按钮添加鼠标离开事件监听器
button.addEventListener(MouseEvent.MOUSE_LEAVE, OnButtonLeave);

// 将按钮添加到舞台上
stage.addChild(button);

// 计数器加 1
counts++;
}

// 将主影片剪辑添加到舞台上
stage.addChild(mc);
}

// 每帧调用的更新方法
void Update()
{
// 此方法目前为空,可根据需求添加逻辑
}

// 按钮点击事件处理方法
private void OnButtonClick(CEvent e)
{
// 获取当前点击的按钮对象
MovieClip btn = e.currentTarget as MovieClip;
// 获取主影片剪辑上的文本字段
TextField textfield = mc.getChildByName<TextField>("txt");
// 设置文本字段的文本为按钮对应的字典值
textfield.text = dictionary[btn.name];
}

// 鼠标进入按钮事件处理方法
private void OnButtonEnter(CEvent e)
{
// 此方法目前为空,可根据需求添加逻辑
}

// 鼠标离开按钮事件处理方法
private void OnButtonLeave(CEvent e)
{
// 此方法目前为空,可根据需求添加逻辑
}
}

代码说明

  1. 初始化部分:在 Start 方法中,首先初始化了一个字典,存储了一些键值对。然后检查 MovieClipOverlayCameraBehaviour 实例是否存在,如果存在则获取舞台对象。
  2. 创建主影片剪辑:创建一个主影片剪辑对象 mc,并将其居中到舞台,然后向右偏移 100 个单位。
  3. 创建按钮:遍历字典,为每个键值对创建一个按钮影片剪辑对象。设置按钮的位置、名称和文本,并为按钮添加点击、鼠标进入和鼠标离开事件监听器。
  4. 事件处理方法OnButtonClick 方法处理按钮点击事件,将主影片剪辑上的文本字段的文本设置为按钮对应的字典值。OnButtonEnterOnButtonLeave 方法目前为空,可根据需求添加相应的逻辑。

通过这个示例代码,你可以学习到如何使用 UniSWF 插件加载 SWF 文件、创建影片剪辑对象、设置事件监听器等操作,从而实现动态的用户界面。

作者信息

menghao

menghao

共发布了 3994 篇文章