![]() |
|
||||||||||
|
|||||
|
Мне во флеше необходимо реализовать работу инструмента Crop точно так как он сделан в фотошопе, т.е. при выделении области картинки остается видима только эта область, а остальная часть затеняется, видны бегущие пунктиры, квадратики и т.д.
Может кто уже делал такое? Подскажите функции. Thnx
__________________
www.maxshaman.com |
|
|||||
|
Регистрация: Oct 2003
Адрес: Украина, Киев
Сообщений: 44
|
Привет!
После того как выделена область, скриптом: 1. создаеш пустой клип с depth > того где картинка, т.е. размещаеш его над кортинкой. 2. в этом клипе ресуеш 4 прямоугольника кот. будут закрывать "обрезанную" часть картинку, например серого цвета. 3. устанавливаеш альфа данного клипа на 50%. Бегущую линию - можно например сделать клип с 1-й линией, в кото будет проигроватся анимация. Причем данный клип должен иметь маску в кач-ве мувиклипа и заданным именем, а также иметь максимально возможную длинну. ПОтом береш этот клип и дублируеш его 4 раза и размещаеш слева, сверху,справа, снизу. А размер его регулируется маской. Такие варианты первыми пришли в голову. Удачи
__________________
Удачи, Flasham |
|
|||||
|
Э-э-э неее. Я не то имел в виду. Мне надо все скриптом сделать. Т.е. загружаем картинку, а затем выделяем мышью область картинки и чтоб выделение производилось динамически как в фотошопе - с такими же эффектами и т.д.
__________________
www.maxshaman.com |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Может быть, не самый лучший вариант, но напрягаться сейчас - просто лень, и спать хочется. Позови Silin(a), он любит и умеет такие вещи до ума доводить.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
А где его искать этого Silin(a) ?
__________________
www.maxshaman.com |
|
|||||
|
А в принципе то что ты сделал - очень неплохо. Спасибо.
__________________
www.maxshaman.com |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Вот так, наверное, интереснее будет. Но есть одна проблема: все хорошо, если делаешь выделение стандартным способом – сверху-слева вниз-вправо. Если в других направлениях, - получается лажа.
Надо прописывать дополнительные условия. Будет время, - поправлю. Если еще желающих не найдется. ![]()
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Да уж Силин бы сделал конфетку.
У меня вот что получилось - есть мув с пунктирным квадратом и линкаге - Ну а дальше всё просто /относительно/ - xf = foto._x; yf = foto._y; xc = cont._x; yc = cont._y; _root.onMouseDown = function() { limit_foto = foto.getBounds(this); foto.setMask(null); if (!knopka.hitTest(_root._xmouse, _root._ymouse, false)) { foto._x = xf; foto._y = yf; cont._x = xc; cont._y = yc; x1 = _root._xmouse; y1 = _root._ymouse; _root.onEnterFrame = function() { cont.attachMovie("punktir", "punktir", 1); with (cont) { if (x1>=limit_foto.xMin && x1<=limit_foto.xMax) { if (_root._xmouse>=limit_foto.xMin && _root._xmouse<=limit_foto.xMax) { _x = x1+(_root._xmouse-x1)/2; _xscale = Math.abs(_root._xmouse-x1); } else if (_root._xmouse<limit_foto.xMin) { _x = limit_foto.xMin+(x1-limit_foto.xMin)/2; _xscale = Math.abs(x1-limit_foto.xMin); } else if (_root._xmouse>limit_foto.xMax) { _x = x1+(limit_foto.xMax-x1)/2; _xscale = Math.abs(x1-limit_foto.xMax); } } else if (x1<limit_foto.xMin) { if (_root._xmouse>=limit_foto.xMin && _root._xmouse<=limit_foto.xMax) { _x = limit_foto.xMin+(_root._xmouse-limit_foto.xMin)/2; _xscale = Math.abs(limit_foto.xMin-_root._xmouse); } else if (_root._xmouse<limit_foto.xMin) { _x = limit_foto.xMin; _xscale = 0; } else if (_root._xmouse>limit_foto.xMax) { _x = (limit_foto.xMax+limit_foto.xMin)/2; _xscale = Math.abs(limit_foto.xMax-limit_foto.xMin); } } else if (x1>limit_foto.xMax) { if (_root._xmouse>=limit_foto.xMin && _root._xmouse<=limit_foto.xMax) { _x = limit_foto.xMax+(_root._xmouse-limit_foto.xMax)/2; _xscale = Math.abs(limit_foto.xMax-_root._xmouse); } else if (_root._xmouse<limit_foto.xMin) { _x = (limit_foto.xMax+limit_foto.xMin)/2; _xscale = Math.abs(limit_foto.xMax-limit_foto.xMin); } else if (_root._xmouse>limit_foto.xMax) { _x = limit_foto.xMax; _xscale = 0; } } if (y1>=limit_foto.yMin && y1<=limit_foto.yMax) { if (_root._ymouse>=limit_foto.yMin && _root._ymouse<=limit_foto.yMax) { _y = y1+(_root._ymouse-y1)/2; _yscale = Math.abs(_root._ymouse-y1); } else if (_root._ymouse<limit_foto.yMin) { _y = limit_foto.yMin+(y1-limit_foto.yMin)/2; _yscale = Math.abs(y1-limit_foto.yMin); } else if (_root._ymouse>limit_foto.yMax) { _y = y1+(limit_foto.yMax-y1)/2; _yscale = Math.abs(y1-limit_foto.yMax); } } else if (y1<limit_foto.yMin) { if (_root._ymouse>=limit_foto.yMin && _root._ymouse<=limit_foto.yMax) { _y = limit_foto.yMin+(_root._ymouse-limit_foto.yMin)/2; _yscale = Math.abs(limit_foto.yMin-_root._ymouse); } else if (_root._ymouse<limit_foto.yMin) { _y = limit_foto.yMin; _yscale = 0; } else if (_root._ymouse>limit_foto.yMax) { _y = (limit_foto.yMax+limit_foto.yMin)/2; _yscale = Math.abs(limit_foto.yMax-limit_foto.yMin); } } else if (y1>limit_foto.yMax) { if (_root._ymouse>=limit_foto.yMin && _root._ymouse<=limit_foto.yMax) { _y = limit_foto.yMax+(_root._ymouse-limit_foto.yMax)/2; _yscale = Math.abs(limit_foto.yMax-_root._ymouse); } else if (_root._ymouse<limit_foto.yMin) { _y = (limit_foto.yMax+limit_foto.yMin)/2; _yscale = Math.abs(limit_foto.yMax-limit_foto.yMin); } else if (_root._ymouse>limit_foto.yMax) { _y = limit_foto.yMax; _yscale = 0; } } xxx = _x; yyy = _y; _parent.fl = true; } }; } }; _root.onMouseUp = function() { xsmesch = foto._x-xxx; ysmesch = foto._y-yyy; delete _root.onEnterFrame; }; knopka.onPress = function() { foto.setMask(cont); if (fl) { foto._x += xsmesch; foto._y += ysmesch; cont._x += xsmesch; cont._y += ysmesch; } fl = false; }; Очень надеюсь на помошь Нокса в оптимизации кода. ![]() |
|
|||||
|
Ай, молодца.... Очень неплохо получается.
__________________
www.maxshaman.com |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Цитата:
Если б не надо было б учитывать границы картинки при выделении - было бы 10 строчек, а так вот пришлось в лоб условия прописывать. Надеюсь Нокс мимо не пройдёт, поможет сократить писанину... ![]() Последний раз редактировалось Штрек; 03.09.2004 в 20:47. |
![]() |
Часовой пояс GMT +4, время: 10:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|