Flash AS里 立即升级界面 的语句是什么?

电脑杂谈  发布时间:2019-08-22 15:03:25  来源:网络整理

flash as 版本_flash as实例教程_flash as 教程

maoyeahcommaoyeahcom10-10 11:48

等级Bbs13楼

贴子直接加到满分100分了。急求解决难题。求直接的语句,是做长期算法要用到的,不timer、MouseMove中可以使用updataAfterEvent的那种。

比如:

functionfun()

{

……//显示"正在计算中..."

****//立即升级界面(我问的,就是这条语句,这个功能怎么实现?)

……//大量的算法,这个之后很卡,大约10秒钟

……//算法完毕,结果就起来了,隐藏"正在计算中..."

}

//如果没那条语句,大量算法在卡的过程中,界面上没有显示出“正在计算中...",不友好,用户还以为死机了,其实是在等计算结果。先显示出“正在计算中...",再新起一个timer,延迟10毫秒再执行长期算法,一是这种方式不直接,二是有长期的算法要多次timer(或封装成一个函数,那也绕了),三是现在依旧会有长期的这样的难题。我要找的是直接一条语句可以解决,也便于代码维护。就是立即升级图标,多简单的事,有没有呢?

maoyeahcommaoyeahcom10-10 12:11

等级Bbs14楼

为了减少误会,浪费大家时间给我写事例,我先主动把用timer的举例贴一下:

flash as 版本_flash as实例教程_flash as 教程

界面一个是动态文本(txt),一个按纽(btn)

[code=AS]

importflash.events.MouseEvent;

btn.addEventListener(MouseEvent.CLICK,OnClick);

vartimer:int;

functionOnClick(e:MouseEvent)

{

txt.text="正在计算中...";

clearInterval(timer);

timer=setInterval(callBack,100);

}

functioncallBack()

{

clearInterval(timer);

vari:int;

flash as 版本_flash as 教程_flash as实例教程

varn:int=0;

for(i=0;i<500000000;i++)

n++;

txt.text=String(n);

}

[/code]

========

要问的不是timer,MouseMove中可以使用updataAfterEvent,请看第3楼(楼上)贴

xinjexinje10-10 21:05

等级Bbs15楼

我给你写了一个。你可以说说能否是你要的。


import flash.text.TextField;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.setTimeout;

var txt:TextField = new TextField();
addChild(txt);
txt.text = "空闲";

var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xff0000,0.5);
sprite.graphics.drawRoundRect(0,0,100,30,10);
sprite.buttonMode = true;
addChild(sprite);

stage.addEventListener(Event.ENTER_FRAME,init);
function init(e:Event)
{
stage.removeEventListener(Event.ENTER_FRAME,init);
sprite.addEventListener(MouseEvent.CLICK,onClick);
sprite.x = stage.stageWidth * 0.5 - sprite.width * 0.5;
sprite.y = stage.stageHeight * 0.5 - sprite.height * 0.5;
}

function onClick(e:MouseEvent)
{
txt.text = "start";
        //重要的是这里。
e.updateAfterEvent();
timer = setTimeout(callBack,1);

}
var timer:int;
function callBack()
{
clearInterval(timer);
var i:int;
var n:int = 0;
for (i=0; i <500000000; i++)
{
n++;
}
txt.text = String(n);
}

xinjexinje10-10 21:08

等级Bbs16楼

如果不使用updataAfterEvent我感觉就没什么其他办法了。

flash as实例教程_flash as 教程_flash as 版本

maoyeahcommaoyeahcom10-11 16:31

等级Bbs17楼

看来没有直接实时刷新界面的语句。。。。。。。

这是一种机制,就像消息模式那样,比如:

发送消息1;

发送消息2;

有一种消息模式是,发送出来的消息1,要直到消息1响应完毕了,再发送消息2;

另一种消息模式是,发送出来的消息1,不管消息1有没有响应,立即发送消息2;

AS是后者,我今天想推动的功能是前者,即消息1执行完毕了,也就是"正在计算中..."先在界面上显示出来了,再发送消息2,即执行下面的代码。

C++中,这种消息模式是:

SendMessage这个发送消息,等到消息响应执行完毕才返回,就像读取一个函数一样

PostMessage这个发送消息后及时返回,不管消息是否执行

类似这种消息模式的概念,还有缓存(绘制图标双缓存、文件缓存……):

比如文件缓存:一般在读写流(stream)的之后,数据是先被读到了存储中,再把数据提到文件中,如果想中途实时读取文件,flush()是把缓冲区的数据试图输出。

………………………………

总之,程序员应该能实时控制当前代码的效果,是及时发现效果,还是等其它地方执行完了。

如果AS没有提供这样的语句解决这种模式……我不能对Adobe说脏话,那么我无话可说。

xinjexinje10-11 23:00

等级Bbs18楼

其实flash也有好多不足的地方,比如多线程。虽然目前有了,但是比较乱套。

有些时候我们没法尽可能做到,想尽一切方法,不择手段。所以你就忍了吧。

maoyeahcommaoyeahcom10-12 14:21

等级Bbs19楼

何止如此,还有那个自10.几.几的AX出来后,flash只要最小化(或被其它字段完全遮挡),脚本就暂停。这让众多webgame、客户端插入的Flash界面的网游……情何以堪?

在2010年的之后,flash软件升级太繁烦,一个月要更新N次。游戏反复出错。简单的实例:一个函数,在这个软件版本运行是正常的,升级到下一个版本flash as 版本,函数执行就错误了,再更新到下一个版本,又出现其它错误……玩家的申诉、用户的谩骂,把我们程序员给折腾得……打ADOBE客户电话没人接,发email也没有人回……

xinjexinje10-12 22:45

等级Bbs110楼

关于flash最小化的问题,这是官方从player10.3开始的新模式。最小化时flash as 版本,程序将降至4FPS来节约cpu资源。从而造成了好多疑问。但是有是有相应的解决方案的。

maoyeahcommaoyeahcom10-16 15:18

等级Bbs111楼

看来这个问题解决不了了。。。。。。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-120176-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 王欣阳
        王欣阳

        那要看我们国家的变革力度够不够大持不持久

      热点图片
      拼命载入中...