今天收到一个需求,在应用程序启动时候首先显示flash界面,然后点击flash中的按钮定位到程序的各个功能模块中。
以前做过类似的东西,心想不难。
1、做flash,关键是在flash的按钮中写以下代码
on(release){
fscommand("m_system")
}
m_system是要在pb中操作的命令。
2、在PB中做一个界面,导入OLE控件:shockwave flash object,设置好控件的属性(movie、scalemode、playing等)
在OLE控件的fscommand事件中编写代码
CHOOSE CASE command
CASE "m_system"
//处理代码
CASE ELSE
END CHOOSE
3、在界面的resize事件中编写代码,使OLE控件一起变化。这时发现问题,OLE控件变化了,但flash本身还保留着原OLE控件的大小 。在网上搜shockwave falsh object的各种属性未果,用VS2003中的ACTIVEX测试工具试没有问题。怀疑可能是PB的问题,尝试在resize事件中重新设movie属性,还是不行。最后考虑每次刷新时重新创建对象,终于成功!
a、创建用户自定义对象uo_Flash,此对象加载影片;
b、在resize事件中创建一个uo_Flash对象,用OpenUserObject()打开。注意在打开前要设置uo_Flash.Ole_1的大小。
c、界面刷新需要控制,否则改变窗口大小,会看到背景。控制后也会看到,但好很多。
- SetReDraw(FALSE)
- IF isValid(flash) THEN
- CloseUserObject(flash)
- DESTROY flash
- END IF
- flash = CREATE uo_flash
- flash.width = newwidth
- flash.ole_1.width = newwidth
- flash.height = newheight
- flash.ole_1.height = newheight
- OpenuserObject(flash,0,0)
- SetReDraw(TRUE)
不知道有没有其它好的处理办法?