Absolutely, I was following this along but at some given point I thought maybe they overlook the most simple way. Which is always good, otherwise we would maybe have square wheels...
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Anthony Pace Sent: zondag 29 maart 2009 13:45 To: Flash Coders List Subject: Re: [Flashcoders] ?: how to prevent users to copy text from aTextArea? In this situation I agree with you, that rolling your own would be pretty easy and could prove to be less of a hassle; however, he does present a nice solution to the problem at hand. Cor wrote: > Just interested. > Is all this worth the hassle? > I mean instead using a TextArea, I would go for a normal TextField and a > custom scrollbar all in 1 movieclip. > And set the needs. > > Cor. > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Muzak > Sent: zondag 29 maart 2009 1:20 > To: Flash Coders List > Subject: Re: [Flashcoders] ?: how to prevent users to copy text from > aTextArea? > > > The problem seems to be that TextArea uses the "enabled" value to set the > inner textField's selectable property value. > > protected function updateTextFieldType():void { > textField.type = (enabled && _editable) ? TextFieldType.INPUT : > TextFieldType.DYNAMIC; > textField.selectable = enabled; > textField.wordWrap = _wordWrap; > textField.multiline = true; > } > > So each time the updateTextFieldType() method is called, no matter what you > set TextArea.textField.selectable to, it will revert to > the TextArea.enabled value. > That's why : > > details_ta.textField.selectable = false; > > doesn't really work. > > So it's not really a bug, just a (very) bad decision. > Why it was done that way, who knows.. > > To get the TextArea to work the way you want, you can extend it and override > the updateTextFieldType() method and add a selectable > property, like so: > > package { > > import fl.controls.TextArea; > import flash.text.TextFieldType; > > public class TextArea2 extends TextArea { > > private var _selectable:Boolean = true; > > override protected function updateTextFieldType():void { > textField.type = (enabled && _editable) ? TextFieldType.INPUT : > TextFieldType.DYNAMIC; > textField.selectable = _selectable; > textField.wordWrap = _wordWrap; > textField.multiline = true; > } > > public function get selectable():Boolean { > return _selectable; > } > public function set selectable(value:Boolean):void { > _selectable = value; > super.textField.selectable = value; > updateTextFieldType() > } > > } > } > > > Tested with the code you provided earlier (normal TextArea on stage): > > package { > > import flash.display.Sprite; > import fl.controls.TextArea; > import flash.text.TextField; > import flash.events.Event; > import TextArea2; > > public class TestTextArea extends Sprite { > > public var details_ta:TextArea; > public var details2_ta:TextArea2; > > public function TestTextArea() { > addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); > init(); > } > > private function init():void { > trace("TestTextArea ::: init"); > details2_ta = new TextArea2(); > details2_ta.selectable = false; > details2_ta.x = 220; > details2_ta.y = 10; > details2_ta.width = 200; > details2_ta.height = 100; > addChild(details2_ta); > } > > private function addedToStageHandler(evt:Event):void { > trace("TestTextArea ::: addedToStageHandler"); > var msg:String = "<b>Lorem ipsum dolor sit amet,</b> consectetuer > adipiscing elit."; > details_ta.htmlText = msg; > details2_ta.htmlText = msg; > } > > } > } > > regards, > Muzak > > ----- Original Message ----- > From: "Keith Reinfeld" <[email protected]> > To: "'Flash Coders List'" <[email protected]> > Sent: Saturday, March 28, 2009 10:11 PM > Subject: RE: [Flashcoders] ?: how to prevent users to copy text from > aTextArea? > > > >> Then again there is this: >> >> package{ >> //imports >> import fl.controls.TextArea; >> import flash.text.TextField; >> >> public class CustomTextArea extends TextArea{ >> //vars >> private var internalTextField:TextField; >> >> public function CustomTextArea(){ >> super(); >> internalTextField = TextField(this.textField); >> } >> >> public function set selectable(b:Boolean):void{ >> internalTextField.mouseEnabled = b; >> this.editable = b; >> } >> >> public function get selectable():Boolean{ >> return internalTextField.mouseEnabled; >> } >> } >> } >> >> Example usage: >> >> package{ >> //imports >> import flash.display.MovieClip; >> import CustomTextArea; >> >> public class Application extends MovieClip{ >> //vars >> private var customTA:CustomTextArea; >> >> public function Application(){ >> init(); >> //addEventListener(KeyboardEvent.KEY_DOWN, >> onUpArrow); >> } >> >> private function init():void{ >> customTA = new CustomTextArea(); >> >> addChild(customTA); >> customTA.x = 0; >> customTA.y = 0; >> customTA.width = 150; >> customTA.height = 90; >> customTA.htmlText = "<font color='#0000FF'><b>Lorem >> ipsum dolor sit amet,</b> consectetuer adipiscing elit.</font><font >> color='#0000FF'><b>Lorem ipsum dolor sit amet,</b> consectetuer adipiscing >> elit.</font><font color='#0000FF'><b>Lorem ipsum dolor sit amet,</b> >> consectetuer adipiscing elit.</font><font color='#0000FF'><b>Lorem ipsum >> dolor sit amet,</b> consectetuer adipiscing elit.</font>"; >> >> trace("customTA.selectable =",customTA.selectable); >> customTA.selectable = false; >> trace("customTA.selectable =",customTA.selectable); >> } >> } >> } >> >> HTH >> >> Regards, >> >> -Keith >> > > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > No virus found in this incoming message. > Checked by AVG - www.avg.com > Version: 8.5.278 / Virus Database: 270.11.31/2028 - Release Date: 03/28/09 > 07:16:00 > > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.278 / Virus Database: 270.11.31/2028 - Release Date: 03/28/09 07:16:00 _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

