![]() |
|
||||||||||
|
|
|
|||||
|
Modus ponens
|
http://flasher.ru/forum/attachment.p...6&d=1221782525
Ну это то, что сам делал, не бог весть что, просто пример. http://www.flashdevelop.org/communit...hp?f=13&t=3943 Это шаблон с кучей всего, его бы еще немного до ума довести и получилась бы интересная штука, ну и такого добра много...
__________________
Hell is the possibility of sanity |
|
|||||
|
Цитата:
В плане того, что мне лень разбираться во Flex SDK и настраивать его на работу с FD, и я компилирую через Flash IDE ![]()
__________________
Тут мужик танцует и поёт про флэш |
|
||||||
|
ветеран форума
|
Цитата:
(кстати я противник стиля написания однострочных if-ов без фигурных скобок) Цитата:
![]() Цитата:
Цитата:
Вспоминается цитата из старого прикола про программистов разных стран: Цитата:
С помощью AS1/2 можно зарабатывать деньги. В принципе, он на данный момент востребован. Аналогично с AS3. У каждого своя ниша, они во многом пересекаются, и у AS3 ниша несколько больше. Вот и все.
__________________
4am is time to rock |
|
|||||
|
Modus ponens
|
А мне просто скучно... вот и отвечу
![]() Код не чужой, а мой =) dispose() ничего не возвращает... и это не кастомный какой-то метод, думаю, что из контекста не сложно догадаться, что _screenCapture - это BitmapData, а _abg - это MovieClip. GFX.grid() создает новый клип и его же и возвращает, более-менее она выглядит вот так: /** * Draws rectangle filled with bitmap pattern. * @param clip parent MovieClip. * @param w width Number. * @param h height Number. * @param b bitmap BitmapData. * @param lc line color Number, valid values 0 - 0xFFFFFF * @return MovieClip */ public static function grid(clip:MovieClip, w:Number, h:Number, b:BitmapData, lc:Number):MovieClip { var mc:MovieClip = clip.createEmptyMovieClip("rct" + counter, clip.getNextHighestDepth()); mc.beginBitmapFill(b); if (lc != undefined) { mc.lineStyle(1, lc, 100, true, "none"); w--; h--; } mc.moveTo(0, 0); mc.lineTo(w, 0); mc.lineTo(w, h); mc.lineTo(0, h); mc.lineTo(0, 0); mc.endFill(); return mc; } Разница между наличием и отсутствием рантайм ошибок заключается вот в чем: если у вас нет сообщений о рантай ошибках - вы видите, что програма не работает, а почему - не знаете, и, будете расставлять трейсы там, где вам кажеться, что возможно происходит ошибка... даже в средних размеров проекте это отнимает часы работы. А когда есть рантайм ошибки, вам программа сама говорит, что и где в ней не так, и искать их не нужно, нужно просто откыть код в редакторе и исправить... компоненты для 7-8 версий Флеша были действительно очень плохо написаны потому, что только на то, чтобы их скомпилировать в strict mode и подключить к проекту нужно было потратить несколько часов (это если знать что делать и где искать). А так можно было и несколько дней провозиться... + работали очень нееффективно + рекомендация от ММ была - не использовать больше 125 компонентов в проекте... а 125 это совсем не много... тоесть, прямо скажем, вообще смешная цифра какая-то...
__________________
Hell is the possibility of sanity |
|
|||||
|
Banned
|
Цитата:
Кстати, мой хинт - делать это в следующем кадре. |
|
|||||
|
Modus ponens
|
А кто сказал, что эта битмапдата нигде не удаляется? =) Ну ей богу... тот самый первый кусок кода - из FromManager'a чего-нибудь типа FormManager.createAlert(), а удаляется битмапдата в каком-нибудь FormManager.removeAlert(), но опять же, к делу это абсолютно никакого отношения не имеет, т.как даже если бы там было if (true) bitmapData.dispose() или вообще не было этого ифа, ничего бы не изменилось. Эта строчка нужна была для ситуаций, когда алерт создавался несколько раз подряд не вызывая в промежутках removeAlert().
__________________
Hell is the possibility of sanity |
|
|||||
|
ветеран форума
|
Цитата:
А этот if вообще для другого: если битмапа уже создана(и, соответственно, занимает память), то уничтожаем ее содержимое. Все корректно
__________________
4am is time to rock |
|
|||||
|
Banned
|
Цитата:
Это, конечно, ерунда вроде - но уже показывает тупизну универсального кода - потенциально тут уже может быть косяк. |
|
|||||
|
Modus ponens
|
Да млииииин, ну как же еще объяснить... ну абсолютно все равно что бы не возвращал dispose() к условию в if() это вообще отношения не имеет! При чем тут универсальность кода!? Я уже объяснил зачем там этот if.
Вот нашел какой-то промежуточный вариант кода, надеюсь, это как-то поможет понять зачем это было нужно... public function createAlert(alertType:String, o:Object, removePrevious:Boolean):SForm { if (!removePrevious) _abase.removeMovieClip(); else _backSteps++; _abg.removeMovieClip(); /*if (_screenCapture) _screenCapture.dispose(); _screenCapture = new BitmapData(Stage.width, Stage.height); _screenCapture.draw(_root); _screenCapture.applyFilter(_screenCapture, new Rectangle(0, 0, Stage.width, Stage.height), new Point(0, 0), new BlurFilter(4, 4, 1)); _abg = GFX.grid(_root, Stage.width, Stage.height, _screenCapture);*/ _abg = GFX.rct0000(_root, Stage.width, Stage.height, GFX.WHITE, 30); _abg.onRelease = function():Void {}; _abg.useHandCursor = false; _abase = _root.createEmptyMovieClip("abase" + _root.getNextHighestDepth(), _root.getNextHighestDepth()); var ssubj:String = alertType; var isErr:Boolean; switch(alertType) { case "404": case SForm.TEXT_ALERT: isErr = false; break; default: isErr = true; } var rect:Rectangle = new Rectangle(0, 0, 220, 220); switch (String(o)) { case FilterObject.BLUR: rect.height = 140; break; case FilterObject.GLOW: rect.height = 195; rect.width = 226; break; case FilterObject.DROP_SHADOW: rect.height = 180; rect.width = 340; break; case FilterObject.BEVEL: rect.height = 210; rect.width = 345; break; case EffectObject.IRIS: rect.height = 225; rect.width = 225; break; case EffectObject.FADE: case EffectObject.FLY: case EffectObject.ZOOM: rect.height = 195; rect.width = 175; break; } switch (alertType) { case SForm.CONFIRM: rect.height = 120; rect.width = 260; break; } var fprops:FillProps = new FillProps(FillProps.FILL_FLAT, [100], [], [GFX.WHITE]); var lprops:LineProps; var style:String; if (!isErr) { lprops = new LineProps(1, GFX.DARK_RED, 100, true); style = "err"; } else { lprops = new LineProps(1); style = "alert"; } var vprops:MCProps = new MCProps(fprops, lprops, 10, false); var _box:SBox = new SBox(_abase, rect, vprops); _box.isAlert = true; _box.setStyle(style); switch (alertType) { case SForm.PALETTE: _box.setForm(SForm.PALETTE); _box.lable = "Choose Color"; break; case SForm.FONT_SELECTOR: _box.setForm(SForm.FONT_SELECTOR); _box.lable = "Choose Typeface"; break; case SForm.TRIM: _box.setForm(SForm.TRIM, _timeline.step, _timeline.aSlide); _box.lable = "Trim track"; break; case SForm.TEXT_ALERT: _box.setForm(SForm.TEXT_ALERT, Number(o)); _box.lable = "Warning"; break; case "404": _box.setForm("_404", 0, arguments[1]); _box.lable = "Resource not found"; break; case SForm.EFFECT: _box.setForm(SForm.EFFECT, 0, o); _box.lable = o + " Properties"; break; case SForm.FILTERS: _box.setForm(SForm.FILTERS, 0, o); _box.lable = o + " Filter Properties"; break; case SForm.CONFIRM: _box.setForm(SForm.CONFIRM, 0, o); _box.lable = "Confirm"; break; default: throw new ERR("no such alert: "+alertType, this); break; } _box.name = alertType + _forms.length; _inactiveForm = _broadcastingForm; _broadcastingForm = _box.getForm(); if (!removePrevious) { _box.x = Math.round(Stage.width/2 - _box.w/2); _box.y = Math.round(Stage.height/2 - _box.h/2); } else { _box.x = Math.round(Stage.width/2); _box.y = Math.round(Stage.height/2); } _forms.push(_box); _box.getBackGround().filters = [new DropShadowFilter(5, 45, 0, .4, 6, 6, 1, 1)]; keepOnTop(); dispatchEvent(new FormManagerEvent(FormManagerEvent.FORM_OPEN, _box.getForm())); return _box.getForm(); } public function deleteAlert(frm:SForm):Void { var del:SBox; var i:Number; var l:Number = _forms.length; for (i = 0; i < l; i++) { if (_forms[i].getForm() == frm) { del = SBox(_forms.splice(i, 1)[0]); } } if (!del) del = SBox(_forms.pop()); dispatchEvent(new FormManagerEvent(FormManagerEvent.FORM_CLOSE, del.getForm())); del.deleteContent(); delete del; if (_backSteps > 1) { _inactiveForm = _forms[_forms.length - _backSteps].getForm(); _backSteps--; _broadcastingForm = _forms[_forms.length - _backSteps].getForm(); _forms[_forms.length - _backSteps].swapTo(_abg); } else { delete _abg.onRelease; _abg.removeMovieClip(); _broadcastingForm = _inactiveForm; } if (_screenCapture) _screenCapture.dispose(); _screenCapture = null; }
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:20. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|