如何解决AS3使用建筑物轮廓作为预加载器
我想知道如何进行预加载器,以逐步显示建筑物轮廓。 谁能指出我正确的方向或指南?谢谢解决方法
好吧,您有两种解决方案:
闪
在Flash中,绘制轮廓,并分隔每行以将其放入MovieClip。然后,您必须将每个剪辑放置在不同的图层上(Ctrl + A,右键单击->“分布到图层”)并对其进行排序。
在您的代码中,您必须隐藏每一行。
for (var iClip:int = 0; iClip < _house.numChildren; iClip++)
{
_house.getChildAt(iClip).visible = false;
}
然后在您的代码中,您将有一个监听ProgressEvent.PROGRESS
的函数,我们将其称为onProgress
private function onProgress(event:ProgressEvent):void
{
var totalClips:uint = _house.numChildren;
var lastClipToShow:uint = Math.ceil(totalClips * event.bytesLoaded / event.bytesTotal);
for (var iClip:int = 0; iClip < lastClipToShow; iClip++)
{
_house.getChildAt(iClip).visible = true;
}
}
在此侦听器的每次调用中,您将显示从最深到总数的一小部分的每一行,与加载的数据量相匹配。
码
第二种解决方案将要求您以Array
输入轮廓中每个线段的坐标。
private const HOUSEDATA:Array = [ [[0,0],[10,15]],[[25,354],[32,341]],[[321,54],[78,1]],[[534,5],[23,5]]
];
然后,再次在onProgress
private function onProgress(event:ProgressEvent):void
{
var totalSegments:uint = HOUSEDATA.length;
var lastSegmentToShow:uint = Math.ceil(totalSegments * event.bytesLoaded / event.bytesTotal);
graphics.lineStyle(1,0x0000FF);
graphics.clear();
for (var iSegment:int = 0; iSegment < lastSegmentToShow; iSegment++)
{
graphics.moveTo(HOUSEDATA[iSegment][0][0],HOUSEDATA[iSegment][0][1]);
graphics.lineTo(HOUSEDATA[iSegment][1][0],HOUSEDATA[iSegment][1][1]);
}
}
和瞧!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。