|
|
|||||
Регистрация: Jun 2009
Сообщений: 461
|
ДА именно так:
private var DrawSegSizeX:int=4000; private var DrawSegSizeY:int=DrawSegSizeX; private function DrawvrSeg():BitmapData { var Canvas:Sprite=new Sprite(); addChild(Canvas); for (var v:int=0; v<600; v++) { var _vr:vr=new vr(); _vr.x=Math.random()*(DrawSegSizeX-_vr.width); _vr.y=Math.random()*(DrawSegSizeY-_vr.height); _vr.scaleX=.5; _vr.scaleY=.5; Canvas.addChild(_vr); } for (v=0; v<300; v++) { _vr=new vr(); _vr.x=Math.random()*(DrawSegSizeX-_vr.width); _vr.y=Math.random()*(DrawSegSizeY-_vr.height); _vr.scaleX=.75; _vr.scaleY=.75; Canvas.addChild(_vr); } for (v=0; v<50; v++) { _vr=new vr(); _vr.x=Math.random()*(DrawSegSizeX-_vr.width); _vr.y=Math.random()*(DrawSegSizeY-_vr.height); _vr.scaleX=1; _vr.scaleY=1; Canvas.addChild(_vr); } var vrPicData:BitmapData=new BitmapData(DrawSegSizeX,DrawSegSizeY,true,0x00FFFFFF); vrPicData.draw(Canvas); while (Canvas.numChildren>0) { Canvas.removeChild(Canvas.getChildAt(0)); } removeChild(Canvas); Canvas=null; return (vrPicData); } |
|
|||||
ну похоже да)
а по поводу кода.. зачем 3 цикла? for (var v:int = 0; v < 600; v++) { var _vr:vr = new vr(); _vr.x = Math.random() * (DrawSegSizeX-_vr.width); _vr.y = Math.random() * (DrawSegSizeY-_vr.height); if(v <= 50){ _vr.scaleX = 1; _vr.scaleY = 1; }else if(v > 50 && v <= 300){ _vr.scaleX = .75; _vr.scaleY = .75; }else{ _vr.scaleX = .5; _vr.scaleY = .5; } Canvas.addChild(_vr); } |
|
|||||
Мне лень лезть в Ваш код.
Вот пример: создаем 200 Bitmap с одной и той же BitmapData package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; public class Holder extends Sprite { public function Holder() { super(); var bd:BitmapData = new BitmapData(4000, 4000, true, Math.random() * int.MAX_VALUE); for (var i:int = 0; i < 200; i++) { var bp:Bitmap = new Bitmap(bd); bp.x = Math.random() * 800; bp.y = Math.random() * 600; bp.smoothing = false; this.addChild(bp); } } } } package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main():void { if (this.stage) this.init(); else this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(evt:Event = null):void { this.removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var h:Holder = new Holder(); this.addChild(h); h.startDrag(); } } }
__________________
...вселенская грусть |
|
|||||
Регистрация: Jun 2009
Сообщений: 461
|
Ну можно это описать в одном, ну для примера я просто копипастил.
Цитата:
ТОгда зачем спрашивали ссылку? В примере я также создаю битмапы, и загрузка секунда, может 2. Можите сами попробовать. |
|
|||||
Цитата:
А вообще так можно долго спорить. Может я как-то плохо создаю Bitmap, что у меня тормозит, а у Вас - нет? =)
__________________
...вселенская грусть |
|
|||||
Цитата:
да.. а вот странно, почему ваш пример не тормозит.. там явно что-то не так, а по разрозненным кускам кода трудно понять.. всмысле в итоге вы таскаете все-таки не 255 объектов каждый по 4000х4000, я это имел ввиду.. Последний раз редактировалось derhab; 09.09.2010 в 17:00. |
|
|||||
Регистрация: Jun 2009
Сообщений: 461
|
У вас в коде:
На сцене создаете один экземпляр класса в котором создаете дату, и в цикле создаете битмапы, в которую запихивайте ранее созданаю дату. В моем варианте: Я на сцене создаю дату и в цикле создаю 200 экземпляров класса, в который передаю дату, а уже внутри экземпляра создается битмапа. Ваш вариант не проверял, но в моем варианте затратите секунду. Я скидывал ссылку можете попробовать. Цитата:
package Scr{ import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class vrField extends vZoom { //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- Vars private var DrawSegSizeX:int=4000; private var DrawSegSizeY:int=DrawSegSizeX; private var SegSizeX:int=3700; private var SegSizeY:int=SegSizeX; private var SegMultiplyer:int=1; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- vrField public function vrField():void { SegSizeX*=SegMultiplyer; SegSizeY*=SegMultiplyer; var bd_0:BitmapData=DrawvrSeg(); for (var vY:int=0; vY<=14; vY++) { for (var vX:int=0; vX<=14; vX++) { var _vrSeg:vrSeg=new vrSeg(bd_0,vX,vY,DrawSegSizeX,DrawSegSizeY,SegMultiplyer); _vrSeg.x=vX*SegSizeX; _vrSeg.y=vY*SegSizeY; _vrSeg.scaleX=SegMultiplyer; _vrSeg.scaleY=SegMultiplyer; addChild(_vrSeg); } } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- DrawvrSeg private function DrawvrSeg():BitmapData { var Canvas:Sprite=new Sprite(); addChild(Canvas); for (var v:int=0; v<600; v++) { var _vr:vr=new vr(); _vr.x=Math.random()*(DrawSegSizeX-_vr.width); _vr.y=Math.random()*(DrawSegSizeY-_vr.height); _vr.scaleX=.5; _vr.scaleY=.5; Canvas.addChild(_vr); } for (v=0; v<300; v++) { _vr=new vr(); _vr.x=Math.random()*(DrawSegSizeX-_vr.width); _vr.y=Math.random()*(DrawSegSizeY-_vr.height); _vr.scaleX=.75; _vr.scaleY=.75; Canvas.addChild(_vr); } for (v=0; v<50; v++) { _vr=new vr(); _vr.x=Math.random()*(DrawSegSizeX-_vr.width); _vr.y=Math.random()*(DrawSegSizeY-_vr.height); _vr.scaleX=1; _vr.scaleY=1; Canvas.addChild(_vr); } var vrPicData:BitmapData=new BitmapData(DrawSegSizeX,DrawSegSizeY,true,0x00FFFFFF); vrPicData.draw(Canvas); while (Canvas.numChildren>0) { Canvas.removeChild(Canvas.getChildAt(0)); } removeChild(Canvas); Canvas=null; return (vrPicData); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- }//class }//package package Scr{ import flash.display.*; import flash.events.*; import flash.geom.*; public class vrSeg extends Sprite { //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- Vars private var vrPic:Bitmap=new Bitmap(); public var CurPos:Point=new Point(); private var SegSizeX:int; private var SegSizeY:int; private var MultiplySegSizeX:int; private var MultiplySegSizeY:int; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- vrSeg public function vrSeg(a_vrPicDate:BitmapData,a_X:int,a_Y:int,a_SegSizeX:int,a_SegSizeY:int,a_Multiply:int):void { var vrPic:Bitmap=new Bitmap(a_vrPicDate); addChild(vrPic); CurPos.x=a_X; CurPos.y=a_Y; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- }//class }//package Последний раз редактировалось Tr1te; 09.09.2010 в 17:08. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Абсолютно нечитаемый код... это раз. Да и люди на этом форуме вроде не враги вам, чтобы их запутывать (по крайней мере в одном месте нашел передачу фэйковых параметров) - это два. И три: у вас все наоборот - классы с маленькой буквы, а переменные и пакеты с большой.. не по конвенции - http://opensource.adobe.com/wiki/dis...ng+Conventions, понимаешь ))
Насколько я понял, в данном примере битмапдата не клонируется, а просто используется инстансом во всех 255 битмапах. Проц не грузиться скорее всего потому, что внутри контейнера битмапы стоят неподвижно и не двигаются относительно друг друга. Скорее всего, плеер их как то кэширует и просто не перерисовывает. Последний раз редактировалось i.o.; 09.09.2010 в 17:31. |
|
|||||
Регистрация: Jun 2009
Сообщений: 461
|
Цитата:
Цитата:
А про кэширование, если создавать множество случайно нарисованных картинок, то тоже не тормозит, но долго создается, чтобы 200 картинок отрисовать, очень много времени потратить. |
Часовой пояс GMT +4, время: 15:18. |
|
« Предыдущая тема | Следующая тема » |
Теги |
bitmap , movement |
|
|