Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.09.2010, 15:58
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 21  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
ДА именно так:
Код AS3:
		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);
		}

Старый 09.09.2010, 16:22
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 22  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
ну похоже да)

а по поводу кода.. зачем 3 цикла?

Код AS3:
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);
}
и зачем удалять всех детей из контейнера, если в следующей строчке вы удаляете сам контейнер?)
__________________
freelance | Раздор

Старый 09.09.2010, 16:23
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 23  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Мне лень лезть в Ваш код.

Вот пример: создаем 200 Bitmap с одной и той же BitmapData
Код AS3:
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);
 
			}
 
		}
 
	}
 
}
дальше - добавляем на сцену и начинаем перетаскивать
Код AS3:
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();
 
		}
 
	}
 
}
У меня загрузка близка к смертельной
__________________
...вселенская грусть

Старый 09.09.2010, 16:35
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 24  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
Цитата:
Сообщение от derhab Посмотреть сообщение
а по поводу кода.. зачем 3 цикла?
Ну можно это описать в одном, ну для примера я просто копипастил.

Цитата:
Сообщение от derhab Посмотреть сообщение
и зачем удалять всех детей из контейнера, если в следующей строчке вы удаляете сам контейнер?)
Потому что я не уверен в том что удаляется.

Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Мне лень лезть в Ваш код. У меня загрузка близка к смертельной
ТОгда зачем спрашивали ссылку?
В примере я также создаю битмапы, и загрузка секунда, может 2. Можите сами попробовать.

Старый 09.09.2010, 16:48
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 25  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
ТОгда зачем спрашивали ссылку?
Ссылка на ваш код мне без надобности. Вероятно, по этому я ее и не спрашивал.
А вообще так можно долго спорить.
Может я как-то плохо создаю Bitmap, что у меня тормозит, а у Вас - нет? =)
__________________
...вселенская грусть

Старый 09.09.2010, 16:58
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 26  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Цитата:
Потому что я не уверен в том что удаляется
будьте уверены, при удалении контейнера так же удаляются и все его дети..
да.. а вот странно, почему ваш пример не тормозит.. там явно что-то не так, а по разрозненным кускам кода трудно понять..

всмысле в итоге вы таскаете все-таки не 255 объектов каждый по 4000х4000, я это имел ввиду..
__________________
freelance | Раздор


Последний раз редактировалось derhab; 09.09.2010 в 17:00.
Старый 09.09.2010, 17:02
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 27  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
У вас в коде:
На сцене создаете один экземпляр класса в котором создаете дату, и в цикле создаете битмапы, в которую запихивайте ранее созданаю дату.

В моем варианте:
Я на сцене создаю дату и в цикле создаю 200 экземпляров класса, в который передаю дату, а уже внутри экземпляра создается битмапа.

Ваш вариант не проверял, но в моем варианте затратите секунду. Я скидывал ссылку можете попробовать.

Цитата:
Сообщение от derhab Посмотреть сообщение
да.. а вот странно, почему ваш пример не тормозит.. там явно что-то не так, а по разрозненным кускам кода трудно понять..
Вот код поля:
Код AS3:
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
Это код сегмента:
Код AS3:
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.
Старый 09.09.2010, 17:29
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 28  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Абсолютно нечитаемый код... это раз. Да и люди на этом форуме вроде не враги вам, чтобы их запутывать (по крайней мере в одном месте нашел передачу фэйковых параметров) - это два. И три: у вас все наоборот - классы с маленькой буквы, а переменные и пакеты с большой.. не по конвенции - http://opensource.adobe.com/wiki/dis...ng+Conventions, понимаешь ))

Насколько я понял, в данном примере битмапдата не клонируется, а просто используется инстансом во всех 255 битмапах.
Проц не грузиться скорее всего потому, что внутри контейнера битмапы стоят неподвижно и не двигаются относительно друг друга. Скорее всего, плеер их как то кэширует и просто не перерисовывает.


Последний раз редактировалось i.o.; 09.09.2010 в 17:31.
Старый 09.09.2010, 17:33
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 29  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
В моем примере Bitmap'ы тоже стоят на месте
__________________
...вселенская грусть

Старый 09.09.2010, 17:46
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 30  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
Цитата:
Сообщение от i.o. Посмотреть сообщение
Абсолютно нечитаемый код... это раз. Да и люди на этом форуме вроде не враги вам, чтобы их запутывать (по крайней мере в одном месте нашел передачу фэйковых параметров) - это два. И три: у вас все наоборот - классы с маленькой буквы, а переменные и пакеты с большой..
Я не отношусь, как к врагам. Фэйковые ссылки потому, что это копипаст с оригинала. Я вынес только то что необходимо к теме, и естественно где-то что-то забыл удалить.

Цитата:
Сообщение от i.o. Посмотреть сообщение
Проц не грузиться скорее всего потому, что внутри контейнера битмапы стоят неподвижно и не двигаются относительно друг друга. Скорее всего, плеер их как то кэширует и просто не перерисовывает.
В обоих случаях контейнеры, и не двигаются относительно друг-друга.
А про кэширование, если создавать множество случайно нарисованных картинок, то тоже не тормозит, но долго создается, чтобы 200 картинок отрисовать, очень много времени потратить.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
bitmap , movement

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.