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

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

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

Регистрация: Mar 2011
Сообщений: 53
По умолчанию bitmapdata белый экран

добрый день столкнулся с проблемой и хотел бы узнать мнения специалистов возможно ли ее решить, есть элементы представляющие собой точки сохранения, простая линия в коде она вызывает функцию в которой записывается в битмапдату для последующего сравнения на столкновения с объектом, так вот эти элементы лежат на трассе которая имеет размеры в несколько раз большие размеры чем сцена, соответственны эти элементы находятся за приделами сцены что бы они попали в битмапдату при создании ее приходится указывать размер трассы то есть больше сцены размер примерно 3000х4000 px таких элементов у меня 6-ть по всей трассе и при компиляции, пользуюсь adobe flash во флешке появляется про100 белый экран, закрываю ее тыкаю во флеше на сцену и все элементы исчезают остается только одна белая сцена, закрываю открываю все нормально, все возвращается, более того открываю откомпилированную флешку из папки и она запускается как и должна, вопрос том как можно избавится от глюка, и второй вопрос возможно можно отрисовывать не указывая такие громадные размеры, если я уменьшаю количество элементов на сцене до двух к примеру то компилятор справляется нормально

вот функция которой пользуюсь
Код AS3:
function addBoxPoint(obj:MovieClip):void{
 
	if(debug&&boxesChekPoint.length<3){
		var bmpBoxPoint:BitmapData=new BitmapData(stage.width, stage.height, false); 
		var myMatrix:Matrix = new Matrix();
		myMatrix.createBox(obj.scaleX, obj.scaleY, (obj.rotation*Math.PI/180), obj.x+mainMap.x,obj.y+mainMap.y);
		//new Rectangle(0, 0, ApplicationData.stageW, ApplicationData.stageH)
		bmpBoxPoint.fillRect(new Rectangle(0, 0, stage.width, stage.height), 0xFFFFFF);
		bmpBoxPoint.draw(obj,myMatrix);
		boxesChekPoint.push(bmpBoxPoint);
	}
	//trace(stage.width, stage.height,obj.scaleX, obj.scaleY, (obj.rotation*Math.PI/180), obj.x+mainMap.x,obj.y+mainMap.y)
 
	/*var b:Bitmap=new Bitmap(bmpBoxPoint);
	gameZ.addChild(b);*/
}
надеюсь описал понятно и надеюсь на вашу помощь, заранее спасибо

Старый 06.12.2011, 16:42
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
надеюсь описал понятно
Как может быть понятно после такого?
Цитата:
соответственны эти элементы находятся за приделами сцены что бы они попали в битмапдату при создании ее приходится указывать размер трассы то есть больше сцены размер примерно 3000х4000 px таких элементов у меня 6-ть по всей трассе и при компиляции
Ни одной запятой! А весь текст - одно предложение.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.12.2011, 17:23
bookin вне форума Посмотреть профиль Отправить личное сообщение для bookin Найти все сообщения от bookin
  № 3  
Ответить с цитированием
bookin

Регистрация: Mar 2011
Сообщений: 53
да с запятыми что то провтыкал писал на скорую руку просто

Цитата:
соответственно эти элементы находятся за приделами сцены, что бы они попали в битмапдату, при создании ее, приходится указывать размер трассы, то есть больше сцены, примерно 3000х4000 px, таких элементов у меня 6-ть по всей трассе и при компиляции

Старый 06.12.2011, 18:21
smithy вне форума Посмотреть профиль Отправить личное сообщение для smithy Найти все сообщения от smithy
  № 4  
Ответить с цитированием
smithy

Регистрация: Oct 2011
Адрес: Питер
Сообщений: 58
Цитата:
простая линия в коде она вызывает функцию в которой записывается в битмапдату для последующего сравнения на столкновения с объектом
что такое простая линия в коде и как она может что-то вызывать?

Старый 06.12.2011, 18:33
bookin вне форума Посмотреть профиль Отправить личное сообщение для bookin Найти все сообщения от bookin
  № 5  
Ответить с цитированием
bookin

Регистрация: Mar 2011
Сообщений: 53
на сцене нарисована линия, преобразована в символ, внутри символа написал строку кода которая вызывает функцию передовая себя в качестве параметра, не знаю как еще правильнее объяснить

Добавлено через 1 минуту
Цитата:
Пришло время заняться платформами. Создаём прямоугольный клип и внутри него в кадре пишем одну простую строчку:
_parent.addBox(this);
В этом вся прелесть. В этой строке вызывается функция, которая добавит этот блок в массив платформ и в дальнейшем при проверке мы будем в цикле проходить по этому массиву.Слайд 7.
вот кусок текста из инструкции с сайта http://xitri.com возможно так понятнее

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

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

Старый 06.12.2011, 18:55
bookin вне форума Посмотреть профиль Отправить личное сообщение для bookin Найти все сообщения от bookin
  № 7  
Ответить с цитированием
bookin

Регистрация: Mar 2011
Сообщений: 53
попробую по другому описать проблему:

есть сцена размерами 800х600;

создаю объект BitmapData заданной ширины и высоты:
Код AS3:
var bmpBoxPoint:BitmapData=new BitmapData(obj.width, obj.height, false);
т.к. нельзя задать данному объекту позиционирование он размещается в позиции 0, 0, объекта в котором находится.

Объект BitmapData находится в объекте у которого глобальные координаты 0, -980, соответственно объект BitmapData находится выше сцены, и принимает размер объекта который передан (к примеру 500х30)

далее с помощью матрицы задаю размер и позиционирование объекта который передан в BitmapData:
Код AS3:
var myMatrix:Matrix = new Matrix();
		myMatrix.createBox(obj.scaleX, obj.scaleY, (obj.rotation*Math.PI/180), obj.x+mainMap.x,obj.y+mainMap.y);
и отображаю исходный экранный объект:
Код AS3:
bmpBoxPoint.draw(obj,myMatrix);
получается BitmapData имеет координаты верхнего левого угла 0,0, а правого нижнего 500, 30
а объект который в нем отображен, и получил позиционирование с помощью матрицы, имеет координаты 162, 991, то есть намного ниже видимой(как я понимаю) части объекта BitmapData, и при добавления на сцену объекта

Код AS3:
var b:Bitmap=new Bitmap(bmpBoxPoint);
	gameZ.addChild(b);
я его просто не вижу, поэтому приходится при создании BitmapData указывать размеры объекта в котором он находится (3850х4245 px);, при нескольких таких процедур, создания битмапдат, происходит то что нужно исправить, вижу белый экран после компиляции и все

как я понимаю засирается память, но так как я новичок в as то могу ошибаться, и мне нужно понять как можно отрисовывать иначе что бы не задавать таких громадных размеров

Добавлено через 2 минуты
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
на xitri в основном AS2 код. В AS3 писать код не в классах - плохая практика
да я знаю что плохо, но не ознакомился еще с работой в классах, при следующем проекте буду изучать работу, сейчас меня интересует другое, и я не думаю что мой вопрос решает переносом кода в классы

Старый 06.12.2011, 18:59
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Вы путаете BitmapData и Bitmap. У BitmapData нет свойства x и y - они содержат графическую информацию, но на сцену такие объекты поместить нельзя.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 06.12.2011, 19:22
bookin вне форума Посмотреть профиль Отправить личное сообщение для bookin Найти все сообщения от bookin
  № 9  
Ответить с цитированием
bookin

Регистрация: Mar 2011
Сообщений: 53
я не пытаюсь поместить на сцену с помощью
Код AS3:
 var b:Bitmap=new Bitmap(bmpBoxPoint);
	gameZ.addChild(b);
я пытаюсь посмотреть верно ли расположились элементы по данным bitnapData

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

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

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


 


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


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