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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.07.2005, 15:17
rukez вне форума Посмотреть профиль Отправить личное сообщение для rukez Найти все сообщения от rukez
  № 11  
Ответить с цитированием
rukez

Регистрация: Jul 2005
Сообщений: 41
Кто там про "умных флэшеров" вспоминал ?
Я именно для разбиения мувика и спрашивал про ширину - а теперь проведи интереса ради эксперимент - сделай мувик высотой в 1px и шириной например в 15, в нём следовательно линию толщиной в 1px и шириной в те-же 15. Всё вроде нормально ... до тех пор пока ты не сделаешь _width=например 45 - линия станет толщиной в 3 пикселя -> метод с разбиением мувика на боковые части которые только меняют координаты и среднюю часть которая и меняет свой _width не работает
Как вариант можно среднюю часть делать из чёрного jpeg'a размером 1х1 с _width = 15 но блин, где культура языка ? Просто если рисовать jpeg'ами растянутыми то придётся отдельно рисовать и область для заливки (тут проблем с окантовкой нет - можно использовать _alpha=0) и ресайзить её вместе со всем клипом. Вообщем как я понял культуры во флэше нету ?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Сделано полностью программно (без проверки на минимальные размеры):
Код:
_root.cx = 5;
_root.createEmptyMovieClip ("mc", 1);
_root.mc.createEmptyMovieClip ("mcBG", 2);
_root.mc.createEmptyMovieClip ("mcRamka", 1);
_root.mc.createTextField ("txtContent", 3, _root.cx, _root.cx, 200 - _root.cx * 2, 200 - _root.cx * 2);
_root.mc.txtContent.wordWrap = true;
for (i = 0; i < 100; i++) {
	_root.mc.txtContent.text += "test ";
}
_root.mc.mcBG.lineStyle (0, 0xeeeeee);
_root.mc.mcBG.beginFill (0xeeeeee);
_root.mc.mcBG.moveTo (0, 0);
_root.mc.mcBG.lineTo (200 - _root.cx * 2, 0);
_root.mc.mcBG.lineTo (200 - _root.cx * 2, 200 - _root.cx * 2);
_root.mc.mcBG.lineTo (0, 200 - _root.cx * 2);
_root.mc.mcBG.lineTo (0, 0);
_root.mc.mcBG.endFill ();
_root.mc.mcBg._x = _root.cx;
_root.mc.mcBg._y = _root.cx;
_root.mc.mcRamka.lineStyle (0, 0xaaaaaa);
_root.mc.mcRamka.beginFill (0xaaaaaa);
_root.mc.mcRamka.moveTo (0, 0);
_root.mc.mcRamka.lineTo (200, 0);
_root.mc.mcRamka.lineTo (200, 200);
_root.mc.mcRamka.lineTo (0, 200);
_root.mc.mcRamka.lineTo (0, 0);
_root.mc.mcRamka.endFill ();
_root.mc.mcRamka.onPress = function () {
	_root.mc.x = _root._xmouse;
	_root.mc.y = _root._ymouse;
	if (_root.mc.mcRamka._xmouse >= _root.mc.mcRamka._x + _root.mc.mcRamka._width - _root.cx) {
		_root.mc.w = 2;
	} else if (_root.mc.mcRamka._xmouse <= _root.mc.mcRamka._x + _root.cx) {
		_root.mc.w = 1;
	}
	if (_root.mc.mcRamka._ymouse > _root.mc.mcRamka._height / 2) {
		_root.mc.h = 2;
	} else {
		_root.mc.h = 1;
	}
	_root.mc.mcRamka.onMouseMove = _root.mc.mcRamka.move;
};
_root.mc.mcRamka.onRelease = _root.mc.mcRamka.onReleaseOutside = function () {
	_root.mc.w = 0;
	_root.mc.h = 0;
	delete _root.mc.mcRamka.onMouseMove;
};
_root.mc.mcRamka.move = function () {
	if (_root.mc.w == 2) {
		_root.mc.mcRamka._width += _root._xmouse - _root.mc.x;
		_root.mc.x = _root._xmouse;
		_root.mc.mcBG._width = _root.mc.txtContent._width = _root.mc.mcRamka._width - _root.cx * 2;
	} else if (_root.mc.w == 1) {
		var dx = _root._xmouse - _root.mc.x;
		_root.mc.mcRamka._x += dx;
		_root.mc.mcRamka._width -= dx;
		_root.mc.x = _root._xmouse;
		_root.mc.mcBG._x = _root.mc.txtContent._x = _root.mc.mcRamka._x + _root.cx;
		_root.mc.mcBG._width = _root.mc.txtContent._width = _root.mc.mcRamka._width - _root.cx * 2;
	}
	if (_root.mc.h == 2) {
		_root.mc.mcRamka._height += _root._ymouse - _root.mc.y;
		_root.mc.y = _root._ymouse;
		_root.mc.mcBG._height = _root.mc.txtContent._height= _root.mc.mcRamka._height - _root.cx * 2;
	} else if (_root.mc.h == 1) {
		var dy = _root._xmouse - _root.mc.x;
		_root.mc.mcRamka._y += dy;
		_root.mc.mcRamka._height -= dy;
		_root.mc.y = _root._ymouse;
		_root.mc.mcBG._y = _root.mc.txtContent._y= _root.mc.mcRamka._y + _root.cx;
		_root.mc.mcBG._height = _root.mc.txtContent._height =_root.mc.mcRamka._height - _root.cx * 2;
	}
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 26.07.2005, 18:44
MaxLife вне форума Посмотреть профиль Отправить личное сообщение для MaxLife Найти все сообщения от MaxLife
  № 13  
Ответить с цитированием
MaxLife

Регистрация: Nov 2003
Сообщений: 128
Проблема с линиями может быть исправлена тем, что линии ставится hairline-стиль. Однако для действительно больших масштабов - 10000%, 100000% могут появиться ещё более неприятные косяки в виде следов от перерисовки.

Лечить вообще с помощью вложенных клипов можно. Для этого рекомендауется рамочный клип делать сразу приличной высоты или ширины, а потом его сжимать до 10-1%. В этом случае можно жить.

А сам вопрос на тему ресайзинга Макромедия решает через UIComponent - там есть метод draw(), используемый для перерисовки при изменении размеров, однако в этом случае нужно использовать не _width/_height, а setSize(). Если сочетать его с техникой рамочных клипов, надо перехватывать либо сам setSize, либо draw, либо, кажется, layoutChildren() или что-то вроде. Можно глянуть в исходник UIComponent'а. От себя скажу, что я перехватывал и сам setSize, и служебный метод, и работало. Давно, правда, было. Где исходник не упомню...

Старый 26.07.2005, 19:36
MaxLife вне форума Посмотреть профиль Отправить личное сообщение для MaxLife Найти все сообщения от MaxLife
  № 14  
Ответить с цитированием
MaxLife

Регистрация: Nov 2003
Сообщений: 128
Наврал. Нашёл у себя - size() перехватывать надо

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

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

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


 


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


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