![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2005
Сообщений: 41
|
Кто там про "умных флэшеров" вспоминал ?
Я именно для разбиения мувика и спрашивал про ширину - а теперь проведи интереса ради эксперимент - сделай мувик высотой в 1px и шириной например в 15, в нём следовательно линию толщиной в 1px и шириной в те-же 15. Всё вроде нормально ... до тех пор пока ты не сделаешь _width=например 45 - линия станет толщиной в 3 пикселя -> метод с разбиением мувика на боковые части которые только меняют координаты и среднюю часть которая и меняет свой _width не работает ![]() Как вариант можно среднюю часть делать из чёрного jpeg'a размером 1х1 с _width = 15 но блин, где культура языка ? Просто если рисовать jpeg'ами растянутыми то придётся отдельно рисовать и область для заливки (тут проблем с окантовкой нет - можно использовать _alpha=0) и ресайзить её вместе со всем клипом. Вообщем как я понял культуры во флэше нету ? ![]() |
|
|||||
|
Негуру
администратор
Регистрация: 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;
}
};
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 128
|
Проблема с линиями может быть исправлена тем, что линии ставится hairline-стиль. Однако для действительно больших масштабов - 10000%, 100000% могут появиться ещё более неприятные косяки в виде следов от перерисовки.
Лечить вообще с помощью вложенных клипов можно. Для этого рекомендауется рамочный клип делать сразу приличной высоты или ширины, а потом его сжимать до 10-1%. В этом случае можно жить. А сам вопрос на тему ресайзинга Макромедия решает через UIComponent - там есть метод draw(), используемый для перерисовки при изменении размеров, однако в этом случае нужно использовать не _width/_height, а setSize(). Если сочетать его с техникой рамочных клипов, надо перехватывать либо сам setSize, либо draw, либо, кажется, layoutChildren() или что-то вроде. Можно глянуть в исходник UIComponent'а. От себя скажу, что я перехватывал и сам setSize, и служебный метод, и работало. Давно, правда, было. Где исходник не упомню... |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 128
|
Наврал. Нашёл у себя - size() перехватывать надо
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:44. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|