2011-09-16 4 views
0

플래시 액션 스크립트 3에서 화이트 보드를 만들어야합니다. 흰색 상자에 텍스트 상자 속성을 만들 수 없습니다. swf를 열면 사용자가 원하는 텍스트 상자 필드를 만들 수있는 whch로 텍스트 상자 속성이 필요합니다. 제발 도와주세요 ..AS3 - 화이트 보드에 텍스트 필드 만들기

+0

는 사용자가 어디를 클릭하고 텍스트 상자가 나타나게 할 수 있어야한다는 것을 의미합니까? – Marty

+0

예. 실제로 사용자가 아이콘을 선택한 다음 어딘가에 클릭하면 텍스트 상자가 나타납니다. 아이콘 부분을 직접 사용해 볼 수 있습니다 .. – ravi404

+0

좀 더 구체적으로 말씀해 주시겠습니까? – Eugeny89

답변

0

이런 식으로 뭔가?


Whiteboard.as

package 
{ 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.text.TextField; 
    import flash.text.TextFieldAutoSize; 
    import flash.text.TextFieldType; 

    public class Whiteboard extends Sprite 
    { 

     private var _whiteboard : Sprite; 
     private var _currentText : TextBox; 

     public function Whiteboard() 
     { 
      super(); 

      createWhiteboard(); 

      enableUserInput(); 
     } 

     private function createWhiteboard() : void 
     { 
      // create whiteboard sprite 
      _whiteboard = new Sprite(); 

      // add to displaylist 
      addChild(_whiteboard); 

      // draw graphics 
      with(_whiteboard.graphics) 
      { 
       lineStyle(10, 0x666666, 1); 
       beginFill(0xFFFFFF, 1); 
       drawRect(0, 0, 800, 600); 
       endFill(); 
      } 
     } 

     private function enableUserInput() : void 
     { 
      _whiteboard.addEventListener(MouseEvent.CLICK, onUserInteract); 
     } 

     private function onUserInteract(event : MouseEvent) : void 
     { 
      // remove if empty 
      if(_currentText && _currentText.htmlText.length == 0) 
      { 
       // remove from displaylist 
       _whiteboard.removeChild(_currentText); 
      } 

      // add new 
      if(event.target == _whiteboard) 
      { 
       _currentText = new TextBox(); 
       _currentText.x = event.stageX; 
       _currentText.y = event.stageY; 

       // add to displaylist 
       _whiteboard.addChild(_currentText); 
      } 
      else 
      { 
       // use clicked text 
       _currentText = event.target as TextBox; 
      } 

      // set selection 
      _currentText.setSelection(0, _currentText.htmlText.length); 

      // set focus 
      stage.focus = _currentText; 
     } 

    } 

} 

import flash.text.TextField; 
import flash.text.TextFieldAutoSize; 
import flash.text.TextFieldType; 
import flash.text.TextFormat; 

class TextBox extends TextField 
{ 
    function TextBox() 
    { 
     super(); 

     background = true; 
     backgroundColor = 0xFF88FF; 
     multiline = false; 
     autoSize = TextFieldAutoSize.LEFT; 
     type = TextFieldType.INPUT; 
     htmlText = ""; 
     selectable = true; 
     defaultTextFormat = new TextFormat("_sans", 18, 0xFFFFFF); 

    } 
} 

enter image description here

+0

오랜 시간이 지난 후에 .. 내가 게시했을 때 나는 초급이었다. 이 질문. 이것은 힌트가 필요했기 때문에 이것을 받아 들였습니다. – ravi404