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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2009, 14:51
elzone вне форума Посмотреть профиль Отправить личное сообщение для elzone Найти все сообщения от elzone
  № 1  
Ответить с цитированием
elzone
[+3 02.07.08]
 
Аватар для elzone

Регистрация: Sep 2004
Сообщений: 86
По умолчанию пересчет высоты мувика с текстом для правильного скрола

здравствуйте.
есть код создания мувиклипа с картинками и текстом:

Код:
function addText() {
				_root.base.text_mc.setMask(_root.scroll_mask);
				_root.scroll_mask._x = 0;
				_root.scroll_mask._y = 253;
				_root.scroll_mask._width = Stage.width - 20;
				_root.scroll_mask._height = Stage.height - 253 - 50;
				_root.scroll_line.swapDepths(1001);
				_root.scroll_mc.swapDepths(1002);
				_root.scroll_line._x = Stage.width - 30;
				_root.scroll_line._y = 253;
				_root.scroll_line._height = _root.scroll_mask._height - 10;
				_root.scroll_mc._x = Stage.width - 30;
				_root.scroll_mc._y = 253;
	
			if (_root.scroll_mask._height >= _root.base.text_mc._height) {
				_root.scroll_line._visible = false;
				_root.scroll_mc._visible = false;
			} else {
				_root.scroll_line._visible = true;
				_root.scroll_mc._visible = true;
			}

			var tY = 253;
			var tH = _root.scroll_line._height - _root.scroll_mc._height;
			var sHY = tY + tH;
			var varDif:Number = _root.base.text_mc._height;
	
			_root.scroll_mc.onPress = function() {
				this.startDrag(false, this._x, tY, this._x, sHY);
				this.onMouseMove = function() {
					_root.base.text_mc._y = - varDif * ((this._y - 253)/sHY) + 253;
				}
			};
		_root.scroll_mc.onRelease = _root.scroll_mc.onReleaseOutside = function () {
			this.stopDrag();
			delete this.onMouseMove;
		};	
}

my_XML = new XML();
my_XML.onLoad = xmlLoad;
my_XML.ignoreWhite = true;
function xmlLoad(success) {
	rootNode = "";
    if (success) {
        rootNode = my_XML.firstChild.childNodes;
		nodeLength = rootNode.length;
		var arrItem = new Array();
		var itemY = 0;
		_root.createEmptyMovieClip("base", 1);
		_root.base.swapDepths(1000);
		_root.base._x = 10;
		_root.base._y = 0;
		_root.base.createEmptyMovieClip("text_mc", 2);
		_root.base.text_mc._y = 253;
		for (var i = 0; i < nodeLength; i++) {			 
			_root.base.text_mc.attachMovie("imgToload", "imgToload" + i, i);
			_root.base.text_mc["imgToload" + i].loadMovie(rootNode[i].attributes.imgLink);
			_root.base.text_mc.attachMovie("txt", "txt" + i, 1000 + i);
			_root.base.text_mc["txt" + i].txt.html = true;
			_root.base.text_mc["txt" + i].txt.multiline = true;
			_root.base.text_mc["txt" + i].txt.autoSize = true;
			_root.base.text_mc["txt" + i].txt.htmlText = rootNode[i].firstChild.nodeValue;
			var	imgW:Number = (Number(rootNode[i].attributes.imgWidth));
			
			if (rootNode[i].attributes.imgWidth == undefined) {
				_root.base.text_mc["txt" + i].txt._x = _root.base.text_mc._x;
				_root.base.text_mc["txt" + i].txt._y = _root.base.text_mc._y + 10 + itemY - 253;
				arrItem.push(_root.base.text_mc["txt" + i]);
				 _root.base.text_mc["txt" + i].txt._width = Stage.width - 80;
			} else {
				_root.base.text_mc["imgToload" + i]._x = _root.base.text_mc._x;
				_root.base.text_mc["imgToload" + i]._y = _root.base.text_mc._y + 10 + itemY - 253;
				arrItem.push(_root.base.text_mc["txt" + i]);
				_root.base.text_mc["txt" + i].txt._width = Stage.width - rootNode[i].attributes.imgWidth - 80;
				_root.base.text_mc["txt" + i].txt._x = imgW + 30;
				_root.base.text_mc["txt" + i].txt._y = _root.base.text_mc["imgToload" + i]._y;
			}

			var textFormat:TextFormat = new TextFormat (Eurostile, 12, 0x666666);
			_root.base.text_mc["txt" + i].txt.setTextFormat(textFormat);
			if (_root.base.text_mc["txt" + i].txt._height > rootNode[i].attributes.imgHeight || rootNode[i].attributes.imgWidth == undefined) {
				itemY = itemY + _root.base.text_mc["txt" + i].txt._height + 20;
			} else {
				itemY = itemY + (Number(rootNode[i].attributes.imgHeight)) + 20;
			}
		}
		trace(arrItem)
		addText();
    } else {
        _root.errorTxt = "Can't load file. Please, try latter.";
    }
}
my_XML.load("data/" + _global.xmlToLoad);
при разных разрешениях по разному происходит прокрутка текста. бывает нормально весь текст показывает при прокрутке, бывает - часть не видна.

вот ссылка на рабочий файл:

http://elzone.net/test/ignat/work5.swf

(можно проверить изменив размеры браузера и перегрузив страницу)

в чем трабла, может кто подскажет.


Последний раз редактировалось elzone; 04.11.2009 в 10:58.
Старый 03.11.2009, 21:28
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 2  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
http://elzone.net/test/ignat/work5.swf, а не http://elzone.net/test/ignat/work4.swf
Походу при Stage.onResize неправильно пересчитывается _root.scroll_line._height
тут:
Код AS1/AS2:
var tH = _root.scroll_line._height - _root.scroll_mc._height;
__________________
john

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

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

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


 


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


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