Der Pejot war länger nicht mehr hier also kann er nicht mit leeren Händen hier angekrochen kommen.
Ich habe mir mal die TextArea-Komponente vorgeknüpft und sie mit einem Resizing, Drag and Drop und der Option, eigene Schaltflächen als Templates einzubinden, versehen.
Konstruktive Kritik ausdrücklich erwünscht; da es sicherlich nicht perfekt ist. Stehe noch am Anfang in Sachen AS3.
Die Klasse TextfieldResizer.as PHP-Code:
package de.pejot.backend.tools.core{
import flash.display.*;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.utils.Timer;
import flash.net.URLRequest;
import fl.controls.ScrollPolicy;
import fl.controls.TextArea;
//
public class TextfieldResizer extends MovieClip {
private var TRheight:Number;
private var TRwidth:Number;
private var TRposX:Number;
private var TRposY:Number;
private var TRscrollH:String;
private var TRscrollV:String;
private var htmlTextArea:TextArea;
private var _defaultBtn:Sprite;
private var _customBtn:Loader;
private var _customDrag:Loader;
private var _btnContainer:Sprite;
private var _dragContainer:Sprite;
private var _defaultDragBar:Sprite;
private var TRresizer:String;
private var TRgraphicPathBtn:String;
private var TRgraphicPathDrag:String;
private var pWordWrap:Boolean;
public function TextfieldResizer(posX:Number=0,posY:Number=0,width:Number=100,height:Number=100,pWordWrap:Boolean=true,scrollH:String="auto",scrollV:String="auto",resizer:String="default",pathBtn:String="",pathDrag:String="") {
TRheight=height;
TRwidth=width;
TRposX=posX;
TRposY=posY + 10;
TRscrollH=scrollH;
TRscrollV=scrollV;
TRresizer=resizer;
TRgraphicPathBtn=pathBtn;
TRgraphicPathDrag=pathDrag;
createTextArea();
}
//
//
/* Anfang --> Methode zur Erstellung der eigentlichen TextArea */
private function createTextArea() {
htmlTextArea=new TextArea();
switch (TRscrollH) {
case "true" :
htmlTextArea.horizontalScrollPolicy=ScrollPolicy.ON;
break;
case "false" :
htmlTextArea.horizontalScrollPolicy=ScrollPolicy.OFF;
break;
case "auto" :
htmlTextArea.horizontalScrollPolicy=ScrollPolicy.AUTO;
break;
}
switch (TRscrollV) {
case "true" :
htmlTextArea.verticalScrollPolicy=ScrollPolicy.ON;
break;
case "false" :
htmlTextArea.verticalScrollPolicy=ScrollPolicy.OFF;
break;
case "auto" :
htmlTextArea.verticalScrollPolicy=ScrollPolicy.AUTO;
break;
}
htmlTextArea.condenseWhite=true;
htmlTextArea.setSize(TRwidth,TRheight);
htmlTextArea.x=TRposX;
htmlTextArea.y=TRposY;
htmlTextArea.wordWrap=pWordWrap;
addChild(htmlTextArea);
createResizer();
}
public function setText(pText:String){
htmlTextArea.htmlText = pText;
}
/* Ende --> Methode zur Erstellung der eigentlichen TextArea */
//
//
/* Anfang --> Methode zur Bestimmung der Resize-Schaltfläche (Default/Custom) */
private function createResizer() {
_btnContainer=new Sprite();
_dragContainer=new Sprite();
addChild(_btnContainer);
addChild(_dragContainer);
switch (TRresizer) {
case "custom" :
createCustomResizeBtn();
break;
case "default" :
createDefaultDragBar();
createDefaultResizeBtn();
break;
}
}
/* Ende --> Methode zur Bestimmung der Resize-Schaltfläche (Default/Custom) */
//
//
/* Anfang --> benutzerdefinierter Button */
private function createCustomResizeBtn() {
_customBtn=new Loader();
_btnContainer.addChild(_customBtn);
_customBtn.contentLoaderInfo.addEventListener(Event.INIT,handleResizerHelper);
_customBtn.load(new URLRequest(TRgraphicPathBtn));
//
_customDrag=new Loader();
_dragContainer.addChild(_customDrag);
_customDrag.contentLoaderInfo.addEventListener(Event.INIT,handleDragerHelper);
_customDrag.load(new URLRequest(TRgraphicPathDrag));
}
private function handleResizerHelper(event:Event) {
handleResizer();
}
private function handleDragerHelper(event:Event) {
handleDragBar();
}
/* Ende --> benutzerdefinierter Button */
//
//
/* Anfang --> Default-Button */
private function createDefaultResizeBtn() {
_defaultBtn=new Sprite();
_defaultBtn.graphics.beginFill(0x333333,1);
_defaultBtn.graphics.drawRect(0,0,15,15);
_defaultBtn.graphics.endFill();
_btnContainer.addChild(_defaultBtn);
handleResizer();
}
/* Ende --> Default-Button */
//
//
/* Anfang --> Default-DragBar */
private function createDefaultDragBar() {
_defaultDragBar=new Sprite();
_defaultDragBar.graphics.beginFill(0x333333,1);
_defaultDragBar.graphics.drawRect(0,0,40,10);
_defaultDragBar.graphics.endFill();
_dragContainer.addChild(_defaultDragBar);
handleDragBar();
}
/* Ende --> Default-DragBar */
//
//
private function handleDragBar() {
_dragContainer.x=htmlTextArea.x;
_dragContainer.y=htmlTextArea.y - _dragContainer.height;
_dragContainer.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownDragBar);
_dragContainer.addEventListener(MouseEvent.MOUSE_UP,mouseReleaseDragBar);
}
//
//
private function mouseDownDragBar(event:MouseEvent):void {
this.startDrag();
htmlTextArea.setFocus();
}
private function mouseReleaseDragBar(event:MouseEvent):void {
this.stopDrag();
}
//
//
/* Anfang --> Definition der Position und des Verhaltens des Resize-Buttons */
private function handleResizer() {
_btnContainer.x=TRposX + TRwidth - _btnContainer.width / 2;
_btnContainer.y=TRposY + TRheight - _btnContainer.height / 2;
_btnContainer.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
_btnContainer.addEventListener(MouseEvent.MOUSE_UP,mouseReleased);
}
//
//
private function btnMove(event:Event) {
htmlTextArea.width=_btnContainer.x - TRposX + _btnContainer.width / 2;
htmlTextArea.height=_btnContainer.y - TRposY + _btnContainer.height / 2;
if (_btnContainer.x < TRposX || _btnContainer.y < TRposY) {
_btnContainer.x=TRposX + htmlTextArea.width;
_btnContainer.y=TRposY + htmlTextArea.height;
_btnContainer.stopDrag();
}
}
//
//
private function mouseDown(event:MouseEvent):void {
_btnContainer.startDrag();
htmlTextArea.setFocus();
this.addEventListener(Event.ENTER_FRAME,btnMove);
}
//
//
private function mouseReleased(event:MouseEvent):void {
_btnContainer.stopDrag();
_btnContainer.removeEventListener(Event.ENTER_FRAME,btnMove);
}
/* Ende --> Definition der Position und des Verhaltens des Resize-Buttons */
}
}
Der Aufruf PHP-Code:
TR1 = new TextfieldResizer(0,0, 100, 100, true, "auto", "auto", "custom", "../bin/graphicFiles/resizer.swf", "../bin/graphicFiles/drager.swf");
… oder einfach die Defaultwerte benutzen
PHP-Code:
TR1 = new TextfieldResizer();
Ich weiß, der Konstruktor ist etwas lang.
Aufruf wie im Beispiel PHP-Code:
import de.pejot.backend.tools.core.TextfieldResizer;
var TR1:TextfieldResizer;
this.addField.addEventListener(MouseEvent.MOUSE_DOWN, addFields);
this.addText.addEventListener(MouseEvent.MOUSE_DOWN, addTexts);
function addFields(event:MouseEvent):void {
TR1 = new TextfieldResizer(0,0, 100, 100, true, "auto", "auto", "custom", "../bin/graphicFiles/resizer.swf", "../bin/graphicFiles/drager.swf");
addChild(TR1);
}
function addTexts(event:MouseEvent):void {
var textfield:String = this.insertText.text;
TR1.setText(textfield);
}
###################
Beispiel anschauen Beispiel herunterladen
Liebe Grüße
PJ