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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.06.2009, 16:26
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 1  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
По умолчанию Собственный класс загрузки изображений из библиотеки

Доброго времени суток.
Решил создать собственный класс загрузки изображений прямо из библиотеки в классе.

Код AS3:
package main{
	import flash.display.*;
 
	public class img extends Sprite {
		var bg:* = null;
		var myBitmap:Bitmap = null;
 
		public function img(obj:*, x:Number = 0, y:Number = 0):void {
			bg = new obj(x,y);
			myBitmap = new Bitmap(bg);
			addChild(myBitmap);
		}
		public function destroy():void {
			removeChild(myBitmap);
			myBitmap = null;
			bg = null;
		}
	}
}
А запускаю я его вот так

Код AS3:
			var bg:img = new img(bgMain);
			addChild(bg);
удаляю так

Код AS3:
			removeChild(bg);
			bg.destroy();
			bg = null;
Хотелось бы услышать ваши мнения по поводу такой реализации, может что-то стоит усовершенствовать особенно в сторону удаления объекта?


Последний раз редактировалось vvvvvvf; 28.06.2009 в 16:44.
Старый 28.06.2009, 16:34
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Стоит наследоваться от класса Bitmap. И это, чё-то он не много пользы приносит, может без него обойтись?
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб


Последний раз редактировалось MrPoma; 28.06.2009 в 16:37.
Старый 28.06.2009, 16:48
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 3  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
Цитата:
Сообщение от MrPoma Посмотреть сообщение
Стоит наследоваться от класса Bitmap. И это, чё-то он не много пользы приносит, может без него обойтись?
я прикинул, что если мне надо добавить 10 картинок из библиотеки, то я должен объявить две переменные вместо одной для каждой картинки

создать два различных класса
Код AS3:
bg = new obj(x,y);
myBitmap = new Bitmap(bg);
вместо одного
Код AS3:
bg = new img();
в итоге получается без класса код займет 50 строк, а с классом только 30 строк, это не говоря уже про удаление.


Последний раз редактировалось vvvvvvf; 28.06.2009 в 17:31.
Старый 28.06.2009, 20:47
ZedAlert вне форума Посмотреть профиль Отправить личное сообщение для ZedAlert Найти все сообщения от ZedAlert
  № 4  
Ответить с цитированием
ZedAlert

Регистрация: May 2009
Сообщений: 17
А я одной строкой и переменной обхожусь:
Код AS3:
var pic1:Bitmap = new Bitmap(new img1(0, 0));

Старый 28.06.2009, 21:31
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 5  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
Цитата:
Сообщение от ZedAlert Посмотреть сообщение
А я одной строкой и переменной обхожусь:
Код AS3:
var pic1:Bitmap = new Bitmap(new img1(0, 0));
Неверный подход так как, когда удаляешь это изображение
Код AS3:
pic1 = null;
и потом вызываешь GC
Код AS3:
try {
	(new LocalConnection).connect('gc');
	(new LocalConnection).connect('gc');
} catch(e:*) {}
то он не освобождает память от изображения, это уже проверено.

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

Старый 28.06.2009, 21:47
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 6  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Цитата:
Сообщение от vvvvvvf Посмотреть сообщение
Неверный подход так как, когда удаляешь это изображение
Код AS3:
pic1 = null;
Код AS3:
pic1.bitmapData.dispose();
pic1 = null;
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 28.06.2009, 21:52
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
public class LibBitmap extends Bitmap
{
 
	public function LibBitmap(exportLinkage:Class, pixelSnapping:String = "auto", smoothing:Boolean = false) 
	{
		super(null, pixelSnapping, smoothing);
		try
		{
			bitmapData = new exportLinkage(0, 0);
		}catch (e:Error){}
 
	}
	public function destroy():void
	{
		bitmapData.dispose();
	}
}

Старый 28.06.2009, 23:13
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 8  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
Цитата:
Сообщение от silin Посмотреть сообщение
Код AS3:
public class LibBitmap extends Bitmap
{
 
	public function LibBitmap(exportLinkage:Class, pixelSnapping:String = "auto", smoothing:Boolean = false) 
	{
		super(null, pixelSnapping, smoothing);
		try
		{
			bitmapData = new exportLinkage(0, 0);
		}catch (e:Error){}
 
	}
	public function destroy():void
	{
		bitmapData.dispose();
	}
}
опишите эту строчку что она делает и вообще зачем она нужна?
super(null, pixelSnapping, smoothing);

и еще я считаю что в destroy переменной bitmapData нужно также присваивать null

Старый 28.06.2009, 23:19
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Эта строчка вызывает конструктор супер-класса с заданными параметрами.

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

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

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


 


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


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