Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 随机像素闪烁白色达1/60秒_Actionscript 3_Flash_Actionscript_Flash Cs5 - Fatal编程技术网

Actionscript 3 随机像素闪烁白色达1/60秒

Actionscript 3 随机像素闪烁白色达1/60秒,actionscript-3,flash,actionscript,flash-cs5,Actionscript 3,Flash,Actionscript,Flash Cs5,我试图使单个像素闪烁1/60秒,然后在2秒钟内消失,直到1280x720屏幕上的每个像素都闪烁为白色。2秒后,屏幕再次变黑约3秒,然后循环并再次显示 我解决这个问题的方法是使用另一个stackoverflow用户提出的fla,我修改了使用电影剪辑的方法。问题是,让921600个电影剪辑随机开始是行不通的。它变得又重又慢。请参阅使用的附加文件 无论如何!我相信有一种非常聪明的方法可以做到这一点。我是个新手。谢谢你的帮助和建议 佛罗里达州(cs5) 主权财富基金 最好的, 罗林 关于我在上面链接

我试图使单个像素闪烁1/60秒,然后在2秒钟内消失,直到1280x720屏幕上的每个像素都闪烁为白色。2秒后,屏幕再次变黑约3秒,然后循环并再次显示

我解决这个问题的方法是使用另一个stackoverflow用户提出的fla,我修改了使用电影剪辑的方法。问题是,让921600个电影剪辑随机开始是行不通的。它变得又重又慢。请参阅使用的附加文件

无论如何!我相信有一种非常聪明的方法可以做到这一点。我是个新手。谢谢你的帮助和建议

佛罗里达州(cs5)

主权财富基金

最好的, 罗林

关于我在上面链接的佛罗里达州的原始设计,请参见马哈茂德·阿卜杜勒·法塔赫在这个链接上的解决方案。
好的,最简单的方法如下:

static const WIDTH:int=1280;
static const HEIGHT:int=720;
static const WH:int=WIDTH*HEIGHT;
static const FRAMES:int=120; // 2 seconds * 60 frames. Adjust as needed
static var VF:Vector.<int>; // primary randomizer
static var BD:BitmapData; // displayed object
static var curFrame:int; // current frame
static var BDRect:Rectangle;
function init():void {
    // does various inits
    if (!VF) VF=new Vector.<int>(WH,true); // fixed length to optimize memory usage and performance
    if (!BD) BD=new BitmapData(WIDTH,HEIGHT,false,0); // non-transparent bitmap
    BDRect=BD.rect;
    BD.fillRect(BDRect,0); // for transparent BD, fill with 0xff000000
    curFrame=-1;
    for (var i:int=0;i<WH;i++) VF[i]=Math.floor(Math.random()*FRAMES); // which frame will have the corresponding pixel lit white
}
function onEnterFrame(e:Event):void {
    curFrame++;
    BD.lock();
    BD.fillRect(BDRect,0);
    if ((curFrame>=0)&&(curFrame<FRAMES)) {
        // we have a blinking frame
        var cw:int=0;
        var ch:int=0;
        for (var i:int=0;i<WH;i++) {
            if (VF[i]==curFrame) BD.setPixel(cw,ch,0xffffff);
            cw++; // next column. These are to cache, not calculate
            if (cw==WIDTH) { cw=0; ch++; } // next row
        }
    } else if (curFrame>FRAMES+20) {
        // allow the SWF a brief black period. If not needed, check for >=FRAMES
        init(); 
    }
    BD.unlock();
}
function Main() {
    init();
    addChild(new Bitmap(BD));
    addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
静态常量宽度:int=1280;
静态常数高度:int=720;
静态常数WH:int=宽度*高度;
静态常量帧:int=120;//2秒*60帧。根据需要进行调整
静态变量VF:Vector;//主随机化器
静态变量BD:BitmapData;//显示对象
静态变量curFrame:int;//当前帧
静态变量BDRect:矩形;
函数init():void{
//有各种各样的初始化吗
if(!VF)VF=new Vector.(WH,true);//用于优化内存使用和性能的固定长度
如果(!BD)BD=新位图数据(宽度、高度、false、0);//非透明位图
BDRect=BD.rect;
BD.fillRect(BDRect,0);//对于透明BD,用0xff000000填充
curFrame=-1;
对于(变量i:int=0;i=0)和&(curFrame=FRAMES)
init();
}
BD.unlock();
}
函数Main(){
init();
addChild(新位图(BD));
addEventListener(事件。输入_帧,onEnterFrame);
}

奇怪的网站,它不接受我的FF13作为“可接受的浏览器”,而且不,我不想只为铃铛和口哨更新FF…实际上,921600个MCs和一个单点都是一个巨大的杀伤力,使用一个位图数据(带位图包装)和使用
setPixel32()
更改其颜色。@Vesper在这里它是一个dropbox链接。我认为这个文件除了看看它应该是什么样子之外,没有什么用处。我知道我得到的是超级笨重的疯狂杀伤力,但我不知道如何使用你所说的位图包装器。但是感谢你在一个方向上设置它。从查看BitmapDat开始a类:嘿。我真的很蠢,实际上不知道如何使用你写的代码。它看起来很有意义,如果我能让它工作的话,注释看起来会很有用。我会把它放在一个空白的关键帧上吗?我需要导入一个单像素图像还是什么的吗?对不起,我对这东西完全不熟悉。嗯,位图数据是只读的y由像素组成。此代码可以放置在类内或关键帧上,如果是keyfrawe,您必须调用
Main()
,或删除
函数Main(){
}
行,以便内部代码将执行一次。最好将此代码放置在扩展
Sprite
的类中,以便
Main()
将是它的构造函数(为此重命名函数),并调用
addChild(new myblinkingstaff());