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

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

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

Регистрация: Jun 2004
Сообщений: 121
Код AS1/AS2:
//Stage.scaleMode = "noScale"
//Stage.align = "TL";
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta:Number) {
	_root.zoom_obj.zoom._x += delta;
	if (_root.zoom_obj.zoom._x+delta>100) {
		_root.zoom_obj.zoom._x = 100;
	}
	if (_root.zoom_obj.zoom._x+delta<10) {
		_root.zoom_obj.zoom._x = 10;
	}
};
Mouse.addListener(mouseListener);
var loadListener:Object = new Object();
loadListener.onLoadComplete = function(target_mc:MovieClip):Void  {
	bd_load_xml_street.load("street.xml");
	bd_load_xml_map.load("map.xml");
};
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);
mcLoader.loadClip("street.swf", _root.map.map2.array_swf);
mcLoader.loadClip("map.swf", _root.map.map2.map_swf);
var bd_load_xml_street = new XML();
bd_load_xml_street.onLoad = function() {
	tmp_street = String(bd_load_xml_street.firstChild);
	_root.bd_xml_swf_street = new Array();
	_root.bd_xml_swf_street = tmp_street.split("\r\n");
	creatObj();
};
var bd_load_xml_map = new XML();
bd_load_xml_map.onLoad = function() {
	tmp_map = String(bd_load_xml_map.firstChild);
	_root.bd_xml_swf_map = new Array();
	_root.bd_xml_swf_map = tmp_map.split("\r\n");
	creatObj2();
};
creatObj = function () {
	for (i=0; i<_root.bd_xml_swf_street.length; i++) {
		tmp_street = _root.bd_xml_swf_street[i].split("|");
		_root.map.map2.array_swf.attachMovie(tmp_street[0], tmp_street[0], i);
		_root.map.map2.array_swf[tmp_street[0]]._x = tmp_street[1];
		_root.map.map2.array_swf[tmp_street[0]]._y = tmp_street[2];
	}
};
creatObj2 = function () {
	for (i=0; i<_root.bd_xml_swf_map.length; i++) {
		tmp_map = _root.bd_xml_swf_map[i].split("|");
		_root.map.map2.map_swf.attachMovie(tmp_map[0], tmp_map[0], i);
		_root.map.map2.map_swf[tmp_map[0]]._x = tmp_map[1];
		_root.map.map2.map_swf[tmp_map[0]]._y = tmp_map[2];
	}
};
_root.map.map2.attachMovie("title_new", "title_new", 10);
_root.map.map2["title_new"]._visible = false;
scroll;
function enter_object(n) {
	_root.map.map2["title_new"]._visible = true;
	_root.map.map2["title_new"]._x = n._x;
	_root.map.map2["title_new"]._y = n._y;
	_root.map.map2["title_new"].txt.text = n.st;
}
_root.onMouseDown = function() {
	setProperty("", _quality, "low");
	startDrag(_root.map.map2);
};
_root.onMouseUp = function() {
	setProperty("", _quality, "medium");
	stopDrag();
};
goObj = function (street) {
	for (i=0; i<_root.bd_xml_swf_street.length; i++) {
		tmp_street = _root.bd_xml_swf_street[i].split("|");
		if (tmp_street[0] == street) {
			_root.zoom_obj.zoom._x = Math.ceil(_root.zoom_obj.zoom._x);
			import mx.transitions.Tween;
			var xTween:Tween;
			var yTween:Tween;
			xTween = new Tween(_root.map.map2.array_swf._parent, '_x', mx.transitions.easing.None.easeNone, _root.map.map2.array_swf._parent._x, _root.map.map2.array_swf._x+Stage.width/2-_root.map.map2.array_swf._x-tmp_street[1]-350, 1, true);
			yTween = new Tween(_root.map.map2.array_swf._parent, '_y', mx.transitions.easing.None.easeNone, _root.map.map2.array_swf._parent._y, _root.map.map2.array_swf._y+Stage.height/2-_root.map.map2.array_swf._y-tmp_street[2]-200, 1, true);
			xTween.onMotionFinished = function() {
				xTween.stop();
				_root.num_zoom = 100;
				_root.time_zoom = setInterval(zoomObj_finish, 10);
			};
			_root.map.map2["title_new"]._visible = true;
			_root.map.map2["title_new"]._x = tmp_street[1];
			_root.map.map2["title_new"]._y = tmp_street[2];
			_root.map.map2["title_new"].txt.text = _root.name_firma;
		}
	}
};
zoomObj_start = function () {
	_root.zoom_obj.zoom._x = Math.ceil(_root.zoom_obj.zoom._x);
	if (_root.zoom_obj.zoom._x != _root.num_zoom) {
		if (_root.zoom_obj.zoom._x>_root.num_zoom) {
			_root.zoom_obj.zoom._x--;
		} else {
			_root.zoom_obj.zoom._x++;
		}
	} else {
		_root.goObj(_root.sel_street);
		clearInterval(_root.time_zoom);
	}
};
zoomObj_finish = function () {
	_root.zoom_obj.zoom._x = Math.ceil(_root.zoom_obj.zoom._x);
	if (_root.zoom_obj.zoom._x != _root.num_zoom) {
		if (_root.zoom_obj.zoom._x>_root.num_zoom) {
			_root.zoom_obj.zoom._x--;
		} else {
			_root.zoom_obj.zoom._x++;
		}
	} else {
		clearInterval(_root.time_zoom);
	}
};
setFlashParam = function (street, name_firma) {
	_root.zoom_obj.zoom._x = Math.ceil(_root.zoom_obj.zoom._x);
	clearInterval(_root.time_zoom);
	_root.name_firma = name_firma;
	_root.sel_street = street;
	_root.num_zoom = 33;
	_root.time_zoom = setInterval(zoomObj_start, 10);
};
var methodName = "setFlashParam";
var instance = null;
var method = setFlashParam;
var wasSuccessful = flash.external.ExternalInterface.addCallback(methodName, instance, method);
stop();
код карты http://onlinevdonsk.ru/index_full_load.php

добавил кодик setProperty("", _quality, "low"); стало еще полегче при перемещении.

Но вот смотрите. В этой карте нету setInterval, onEnterFrame.
При простои карты загрузки ЦП нету. Все правильно. Но вот стоит поводить мышкой по рабочей области ( просто поводить, никаких циклов на onMouseMOve нету), а почему тогда ЗП подлитает аж до 40-50% ? что ему не нравиться?

Добавлено через 2 минуты
замену starDrag() пока не трогаем.

Старый 28.02.2009, 10:39
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 22  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
Потому что флеш рендерер перерисовываит 500 раз в секунду все обьекты на карте при startDrag()

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Поражаюсь своему терпению... Но ведь это мои проблемы, что я плохо объясняю, да?
Попробуем Вашим способом, с картинками))
Код:
var loadListener:Object = new Object();
// У вас что, мало объектов? Зачем нужен еще один???
loadListener.onLoadComplete = function(target_mc:MovieClip):Void  {
	bd_load_xml_street.load("street.xml");
	bd_load_xml_map.load("map.xml");
};
// Итак при загрузке какого-либо клипа mcLoaderом мы сразу загружаем две хмлки
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);
// Ну и (конечно же, чтоб не создавать лишний Объект)) мы грузим СРАЗУ ДВА клипа
// загрузчиком mcLoader. Таким образом, мы получаем ДВА события Complete
// и соответственно ДВА вызова loadListener.onComplete
// и соответственно ДВА раза загрузим по две хмлки
// и каждая из них при каждой своей загрузке вызовет creatObj или creatObj2
// которые наттачат все объекты на карту. Ну и что что два раза?
// Зато график загрузки ЦП будет красивый, с холмиками))
mcLoader.loadClip("street.swf", _root.map.map2.array_swf);
mcLoader.loadClip("map.swf", _root.map.map2.map_swf);
Добавлено через 5 минут
qazwsx, это откуда такая информация? По-моему он перерисовывает точно в соответствии с заданным фпс флэшки. Именно поэтому и используют onMouseMove, что при движении мыши частота события гораздо выше чем фпс - но и тогда ПЕРЕРИСОВЫВАТЬ чаще чем фпс будет если только сказать об этом командой updateAfterEvent().

Добавлено через 26 минут
Еще я бы настоятельно рекомендовал Вам оптимизировать код и не губить мой процессор и мои глаза.
Если найдете время на обучение, почитайте вот эту темку - она в целом близка к Вашей, но я о другом - именно об оптимизации кода, начиная гдето со второй страницы
http://flasher.ru/forum/showthread.php?t=117966&page=2
__________________
Reality.getBounds(this);

Старый 28.02.2009, 18:10
Barzometr вне форума Посмотреть профиль Отправить личное сообщение для Barzometr Найти все сообщения от Barzometr
  № 24  
Ответить с цитированием
Barzometr

Регистрация: Jun 2004
Сообщений: 121
больше не буду губить ваш проц .

буду капаться, спс за ссылку и инфу

Старый 28.02.2009, 19:38
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 25  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
Не то чтобы флеш чтото делал в точности . Но очевидно что при заданом фпс и startDrag все тормазит, так зачем придератся?

Старый 09.04.2009, 12:49
gnus вне форума Посмотреть профиль Отправить личное сообщение для gnus Найти все сообщения от gnus
  № 26  
Ответить с цитированием
gnus

Регистрация: Feb 2008
Сообщений: 100
к сожалению ссылки на карту не работают, так что посмотреть не могу. а так хотелось бы сравнить с моим творением
__________________
http://komimap.ru

Старый 09.04.2009, 13:49
MrXoT вне форума Посмотреть профиль Отправить личное сообщение для MrXoT Найти все сообщения от MrXoT
  № 27  
Ответить с цитированием
MrXoT

Регистрация: Apr 2008
Сообщений: 71
я бы вам посоветовал бы сделать карту на тайлах(tail), было бы намного удобнее и не тормозило бы совсем.

Идея такая
создаете массив карты, типа
Код AS1/AS2:
var mymap = [
 [1, 2, 3, 4, 5, 6, 7, 8, 0],
 [1, 2, 3, 4, 5, 6, 7, 8, 0],
 [1, 2, 3, 4, 5, 6, 7, 8, 0],
 [1, 2, 3, 4, 5, 6, 7, 8, 0],
 [1, 2, 3, 4, 5, 6, 7, 8, 0] 
]
создаете один большой клип называете его map
далее при перетаскивании клипа map, проверяя координаты map, расчитывая какие клипы удалять, а какие добавлять.

вот так я это вижу...

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

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

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


 


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


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