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

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

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

Регистрация: May 2008
Сообщений: 161
По умолчанию Оптимизировать рисование бекграунда

Код:
package {
	import flash.events.*;
	import flash.display.BitmapData;
	import flash.geom.*;
	import flash.display.*;


	public class Wgame extends Sprite {
		public var tile:BitmapData = new BitmapData(256, 256, false, 0xFFFFFF);
		public var matrix = new Matrix();
		public function Wgame() {
			new global;//туто  переменніе
			addEventListener(Event.ENTER_FRAME,onBackgroundLoaded);
			tile.draw(new Botl(0,0));//Botl картинго 256 на 256
			addChild(new Bitmap(new Logo(0,0)));//loog)
			trace('begin');
		}
		function onBackgroundLoaded(evt:Event):void {//собсно рисования бека
			matrix.translate(0,-global.speed);
			this.graphics.beginBitmapFill(tile,matrix,true,false);
			this.graphics.drawRect(0,0,700,600)
			this.graphics.endFill();
		}
	}
}

тормозит жуть мож както подругому можно реализовать вертикально передвигаюешся тайловый бек
вот собсно флешка http://ho1.ho.ua/temp4.swf

Старый 21.06.2008, 00:21
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 2  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
для начала напиши this.graphics.clear

.........
Я вижу такое решение - добавляем на сцену три бакгроунда - один под другим, затем, поднимаем нижние два фона вверх, пока не достигнем нижнего края нижнего фона - после этого переставляем верхний фон вниз.


Последний раз редактировалось Яски; 21.06.2008 в 00:27.
Старый 21.06.2008, 11:48
vooparker вне форума Посмотреть профиль Отправить личное сообщение для vooparker Посетить домашнюю страницу vooparker Найти все сообщения от vooparker
  № 3  
Ответить с цитированием
vooparker
 
Аватар для vooparker

Регистрация: Apr 2006
Адрес: Kursk, Russia
Сообщений: 523
Отправить сообщение для vooparker с помощью ICQ
не совсем понял зачем перерисовывать фон каждый кадр? Не проще ли его нарисовать один раз с размерами ширинаЭкрана x высотаЭкрана + высоты текстуры. А затем двигать, в нужный момент "сдергивая" на исходную позицию, таким образом получиться иллюзия бесконечно длинного фона.
__________________
Челябинские флешеры настолько суровы, что пишут код во Flash IDE

Старый 21.06.2008, 15:30
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Можно нарисовать фон (высотой в два экрана) в битмап, скопировать битмап, и тягать эти два бит мапа один за другим.
http://murmadillo.narod.ru/fla/back_fast.html

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

Регистрация: May 2008
Сообщений: 161
спасибо!

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

Регистрация: Apr 2006
Адрес: Kursk, Russia
Сообщений: 523
Отправить сообщение для vooparker с помощью ICQ
2Alex Lexcuk: а зачем два экрана? достаточно будет высотаЭкрана + высотаТекстуры
__________________
Челябинские флешеры настолько суровы, что пишут код во Flash IDE

Старый 21.06.2008, 16:40
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 7  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Код:
высота экрана = высота текстуры
высота экрана + высота текстуры = 2 * (высота экрана)

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

Регистрация: May 2008
Сообщений: 161
вопрос как теперь залить битмап текстурой?
то есть применить ето к ней
Код:
	this.graphics.beginBitmapFill(tile,matrix,true,false);
	this.graphics.drawRect(0,0,700,600)
	this.graphics.endFill();

Старый 21.06.2008, 17:11
vooparker вне форума Посмотреть профиль Отправить личное сообщение для vooparker Посетить домашнюю страницу vooparker Найти все сообщения от vooparker
  № 9  
Ответить с цитированием
vooparker
 
Аватар для vooparker

Регистрация: Apr 2006
Адрес: Kursk, Russia
Сообщений: 523
Отправить сообщение для vooparker с помощью ICQ
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
Код:
высота экрана = высота текстуры
с чего это вы так решили? это может быть лишь частным случаем
__________________
Челябинские флешеры настолько суровы, что пишут код во Flash IDE

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

Регистрация: May 2008
Сообщений: 161
сделал так..как зазиль битмап так и необнаружыл))
Код:
package {
	import flash.events.*;
	import flash.display.BitmapData;
	import flash.geom.*;
	import flash.display.*;

	public class Wgame extends Sprite {
		public var back:Bitmap
		public var tile:BitmapData = new BitmapData(512,512, false, 0xFFFFFF);
		private var g:*
		private var spr:*
		public var matrix = new Matrix();
		public function Wgame() {
			new global;//туто  переменніе
			addEventListener(Event.ENTER_FRAME,onBackgroundLoaded);
			tile.draw(new Botl(0,0));//Botl картинго 512 на 512
			spr = new Sprite;
			spr.graphics.beginBitmapFill(tile,matrix,true,true);
			spr.graphics.drawRect(0,0,700,600+512)
			spr.graphics.endFill();
			g=addChildAt(spr,0)
			trace('begin');
		}
		function onBackgroundLoaded(evt:Event):void {//собсно рисования бека
		    g.y-=global.speed
			if (g.y<=-512) g.y+=512
		}
	}
}


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

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

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


 


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


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