프로그래밍/Flex/AIR2007.01.30 09:54


Help에 있던 예제
소팅시엔 적용이 되긴 하지만, 예전에 그려줬던게 남아있다.
버그인가?


<?xml version="1.0" encoding="iso-8859-1"?>
<!-- itemRenderers\asRenderer\MainASItemRenderer.mxml -->

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    width="600" height="600">

    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
       
            [Bindable]               
            private var initDG:ArrayCollection = new ArrayCollection([
                {Monday: 12, Tuesday: 22, Wednesday: 452, Thursday: 90},
                {Monday: 258, Tuesday: 22, Wednesday: 45, Thursday: 46},
                {Monday: 4, Tuesday: 123, Wednesday: 50, Thursday: 95},
                {Monday: 12, Tuesday: 52, Wednesday: 111, Thursday: 20},
                {Monday: 22, Tuesday: 78, Wednesday: 4, Thursday: 51}
            ]);
        ]]>
    </mx:Script>

    <mx:Text text="All cells over 100 are red" />
   
    <mx:DataGrid id="myDataGrid"
        dataProvider="{initDG}"
        variableRowHeight="true">
        <mx:columns>
            <mx:DataGridColumn dataField="Monday"
                itemRenderer="myComponents.CellField" />
            <mx:DataGridColumn dataField="Tuesday"
                itemRenderer="myComponents.CellField" />
            <mx:DataGridColumn dataField="Wednesday"
                itemRenderer="myComponents.CellField" />
            <mx:DataGridColumn dataField="Thursday"
                itemRenderer="myComponents.CellField" />
        </mx:columns>
    </mx:DataGrid>
</mx:Application>




package myComponents {

    // myComponents/CellField.as
    import mx.controls.*;
    import mx.core.*;
    import mx.controls.dataGridClasses.DataGridListData;

    public class CellField extends TextInput
    {
        // Define the constructor and set properties.
        public function CellField() {
            super();
            height=60;
            width=80;
            setStyle("borderStyle", "none");
            editable=false;
        }

        // Override the set method for the data property.
        override public function set data(value:Object):void {
            super.data = value;
      
            if (value != null)
            {
                text = value[DataGridListData(listData).dataField];
                if(Number(text) > 100)
                {
                    setStyle("backgroundColor", 0xFF0000);
                }
            }

            super.invalidateDisplayList();
        }
    }
}

Posted by 시난
TAG flex
연습장2007.01.28 13:04


50% ?

'연습장' 카테고리의 다른 글

AIR 번역기입니다. (AIR Translator)  (4) 2008.06.27
닥터후 퍼즐 - 시즌3  (3) 2007.07.04
퍼즐  (0) 2007.07.04
붙임쪽지 (like post it )  (2) 2007.02.20
붙임 쪽지(포스트 잇) 구현 중  (1) 2007.02.16
flash card 5*3  (0) 2007.01.28
Posted by 시난
프로그래밍/Flex/AIR2007.01.27 10:55



예전 Flex 2.0 버젼에 되어있던 effect가 initInstance() 부분이 바뀌었다.
2.0.1. 에서 사용하기 위해서는
Library 프로젝트를 만들고 이 소스(the DistortionEffects Flex2 component)를 연 다음

com.adobe.ac.mxeffects 안에 있는
Flips.as 에서


line 51을
override protected function initInstance( instance : EffectInstance ) : void
{
 ...
}

다음과 같이 바꾸어야 한다.
override protected function initInstance( instance : IEffectInstance ) : void
 {
...
}

그리고
위의 임포트 영역에 다음을 추가한다.
import com.adobe.ac.mxeffects.effectClasses.FlipInstance;

그리고 컴파일 해서 swc를 이용하면 끝.. ^^

p.s.
Flip 말고 door 라든가 다른 효과 모두 동일하게 바꿔야 한다.. ^^:;;;;;


DistortionEffect/CubeEffect 만든 사람 :
DistortionEffect/CubeEffect of Alex Uhlmann

Posted by 시난
프로그래밍/Flex/AIR2007.01.27 10:16
http://elromdesign.com/blog/?p=18
- Posted by elad.ny under Flex

The Flex help doesn’t show an example of how to download a SWF file on the fly & using a loader.So I created a simple example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version=“1.0″?>
<mx:Application xmlns:mx=adobe.com/2006/mxml”>>
 
    <mx:Script>
        <![CDATA[
 
         [Bindable]
         public var SWF_URL:String=“slide2.swf”;
 
            public function initSWF():void {
                swf_intro.load(‘assets/images/home/’+SWF_URL);
            }
        ]]>
    </mx:Script>
 
    <mx:VBox width=“600″ height=“600″>
        <mx:Canvas>
            <mx:ProgressBar width=“200″ source=“swf_intro”/>
        </mx:Canvas>
        <mx:Button label=“Show” click=“initSWF();”/>
        <mx:SWFLoader height=“600″ width=“600″ id=“swf_intro” autoLoad=“false”
         visible=“true”/>
    </mx:VBox>
</mx:Application>
Posted by 시난
TAG Flex 2.0, swf
일상2007.01.26 13:16
평면도 :
사용자 삽입 이미지

부엌 :
사용자 삽입 이미지

거실 :
사용자 삽입 이미지
Posted by 시난
프로그래밍/DB2007.01.25 13:46

컴퓨터에 있던 자료.. 2006. 2. 3

-- 사용자 개체 소유자 변경
declare
@table_name varchar(500)

declare table_cur Cursor for
select '기존사용자개체소유자명.' + name
  from sysObjects
where uid = USER_ID('기존사용자개체소유자명')

open table_cur

Fetch next From table_cur
into @table_name

while @@Fetch_status = 0
Begin
 EXEC sp_changeobjectowner @table_name, '변경할사용자개체소유자명'
 Fetch next From table_cur
into @table_name
End

close table_cur
deAllocate table_cur



// 현재 데이터베이스에 모든 소유자를 변경한다


SP_MSFOREACHTABLE 'sp_changeobjectowner ''?'' , ''shinhan'''

Posted by 시난
TAG MSSQL
프로그래밍/Flex/AIR2007.01.25 13:25
소스 :

바뀐건.. resize() 추가랑..
이것저것 (?)
아. 클릭했을 때 이벤트도 살짝 붙여주고..
이걸로 태그 기반은 70% 정도 되겠네요..

진짜 개발하실 때 참고하시면 좋겠습니당..

 
Posted by 시난
TAG Flex 2.0
프로그래밍/Flex/AIR2007.01.25 11:29
버그가 쪼금 있어요.. rollover rollout 시에 Zoom Effect 를 쓰는데
뭔가 꼬여있다고 할까;
시간되면 고치야죠^^;

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
 creationComplete="init();" horizontalAlign="center" verticalAlign="middle">
 
 <mx:Style>
  Application
  {
      font-size: 24;
  }

  .cssrollover {
   background-color: "#ffffff";
   color: "";
   background-alpha: 1;
  }
 </mx:Style>
 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.containers.Box;
   import mx.containers.HBox;
   import mx.controls.Label;
   private function init():void
   {
    trace("App width : " + this.width);
    trace("App height : " + this.height);
   
    trace("board width : " + board.width);
    trace("board height : " + board.height);
   
   
    var tasg:Array = ["flex2", "money", "girl", "power", "tagbbbbbbbbb1",
          "tag--2", "tagC", "tagD", "tagE", "tagF", "tagG"];
   
    for (var i:uint; i < tasg.length; i++)
    //for (var i:uint; i < 2; i++)
    {     
     var tag:Label = new Label();
     tag.text = "["+i+"]" + tasg[i];
     tag.truncateToFit = false;
     //trace(" w : " + tag.measuredWidth);
     
/*      tag.width  = String(tasg[i]).length * 25;
     tag.height = 40;
     if (posX + tag.width >= board.width) {
      posX  = 0;
      posY += 30;
     }
     
     tag.x = posX;
     tag.y = posY;
     posX += tag.width; */
     
     tag.scaleX = .5;
     tag.scaleY = .5;
     tag.setStyle("textAlign", "center");
     tag.setStyle("fontWeight", "bold");
     tag.setStyle("fontAntiAliasType", "advanced");
     tag.setStyle("horizontalScrollPolicy", "off");
     tag.setStyle("verticalScrollPolicy", "off");
     
     //tag.x = 100;
     //tag.y = 100;
 
     //tagBox.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
     //tagBox.addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
     //tagBox.addEventListener(MouseEvent.ROLL_OVER, doZoom);
     //tagBox.addEventListener(MouseEvent.ROLL_OUT, doZoom);
     
     tag.addEventListener(MouseEvent.ROLL_OVER, onRollOver);
     tag.addEventListener(MouseEvent.ROLL_OUT,  onRollOut);
     
     //tag.d
     
     var box:Box = new Box();
     //box.width = (tasg[i] as String).length * 20;
     //box.height = 30; //tag.height;
     
     
     //box.setStyle("borderStyle", "solid");
     box.setStyle("cornerRadius","5");
     box.setStyle("horizontalAlign", "center");
     box.setStyle("verticalAlign", "middle");
     box.setStyle("backgroundColor", "#ffffff");
     box.setStyle("horizontalScrollPolicy", "off");
     box.setStyle("verticalScrollPolicy", "off");
     
     box.addChild(tag);
     
     
     board.addChild(box);
    }
   
    callLater(display);
   }
   
   private function display():void
   {
    var posX:uint = 0;
    var posY:uint = 0;
    var tagBox:Box;
   
   
   
    //var emptySpace:Array = new Array();
    var emptyAC:ArrayCollection = new ArrayCollection();
   
    for each(tagBox in board.getChildren())
    {
     var tagLabel:Label = tagBox.getChildAt(0) as Label;
     
     trace("TagBox (" + tagBox.width + ", " + tagBox.height + ")");
     trace("[" + tagLabel.text + "] : labelText(" + tagLabel.textWidth + ", " + tagLabel.textHeight + ")");
     trace("[" + tagLabel.text + "] : label(" + tagLabel.width + ", " + tagLabel.height + ")");
     
     tagBox.width  = tagLabel.textWidth  + 15;
     tagBox.height = tagLabel.textHeight + 15;
     
     /* if (tagBox.height) {
     
     } */
     
     //trace("== 후보 len : " + emptySpace.length);
     var obj:Object = null;
     for (var i:uint=0; i < emptyAC.length; i++)
     {
      obj = emptyAC[i];
      if ((obj.x + tagBox.width <= board.width) && (obj.w >= tagBox.width) && (obj.h >= tagBox.height)) {
       //var ac:ArrayCollection = new ArrayCollection(emptySpace);
       emptyAC.removeItemAt(i);
       break;
      } else if (i + 1 == emptyAC.length) {
       obj = null;
      }
     }
     
     // 넣어야 할 곳이 좁다면 밑으로 뺀다
     if (tagBox.width + posX >= board.width)
     {
      // 좁은 곳은 후보 배열에 넣는다
      var ww:uint = board.width - posX;
      emptyAC.addItem({x: posX, y: posY, w: ww, h: tagBox.height});
     
      posX = 0;
      posY += tagBox.height;
     }
     
     // 새로운 위치를 정해준다.
     // 후보 칸에 넣을 수 있다면?
     //trace("후보가 있나? " + (obj != null));
     if (obj != null)
     {
      tagBox.x = obj.x;
      tagBox.y = obj.y;
     }
     else
     {
      tagBox.x = posX;
      tagBox.y = posY;
      posX += tagBox.width;
     }
    }
   
    board.visible = true;
   }
   
 
   public function onRollOver(event:MouseEvent):void
   {
    //trace((event.target as Label).text + event.type);
          zoomin.play([event.target]);
          //event.target.setStyle("backgroundColor","#000000");
         
          var hb:Box = ((event.target as Label).parent) as Box;
          hb.setStyle("borderStyle", "solid");
          hb.setStyle("backgroundColor","#000000");
          hb.setStyle("color","#ffff00");
   }
   
   public function onRollOut(event:MouseEvent):void
   {
          zoomout.play([event.target]);
         
          var hb:Box = ((event.target as Label).parent) as Box;
          //hb.setStyle("backgroundColor","#ffffff");
          hb.setStyle("borderStyle", "");
          hb.setStyle("backgroundColor","");
          hb.setStyle("color","");
   }
   
   
/*    public function doZoom(event:MouseEvent):void
   {
    var tagLabel:Label = event.currentTarget as Label;
    trace(event.type + "::tag textwidth : " + tagLabel.textWidth);
                if (zoomAll.isPlaying) {
                    zoomAll.reverse();
                }
                else {
                    // If this is a ROLL_OUT event, play the effect backwards.
                    // If this is a ROLL_OVER event, play the effect forwards.
                    zoomAll.play([event.target], event.type == MouseEvent.ROLL_OUT ? true : false);
                }
                //zoomAll.play([event.target], event.type == MouseEvent.ROLL_OVER ? true : false);
            } */
  ]]>
 </mx:Script>
 <mx:Canvas id="board" width="400" height="300" visible="false" showEffect="Fade" backgroundColor="#ffffff"
  borderStyle="outset"
  horizontalScrollPolicy="off" verticalScrollPolicy="off" />
 <!-- mx:Zoom id="zoomAll" duration="500" zoomWidthFrom=".5" zoomHeightFrom=".5" zoomWidthTo="1" zoomHeightTo="1" /-->
 <mx:Zoom id="zoomin"  duration="100" zoomWidthFrom=".5" zoomHeightFrom=".5" zoomWidthTo="1"  zoomHeightTo="1"  />
 <mx:Zoom id="zoomout" duration="100" zoomWidthFrom="1"  zoomHeightFrom="1"  zoomWidthTo=".5" zoomHeightTo=".5" />  
</mx:Application>

Posted by 시난
일상2007.01.23 20:54
SCORM - Sharable Contents Object Reference Model의 약자로
'스콤'으로 불리는 듯 하다.


스콤(scorm)이란?  
 
SCORM(Sharable Content Object Reference Model)은 주로 다른 조직에서 가져 온 규격과 표준을 통합한 것이다.
SCORM은 국제적인 규모로 제품을 재사용하고 교환가능하도록 개발하는 데 있어서,
개발자와 콘텐츠 제공업체, 프로젝트 관리자 및 교수 설계자들이 준수해야 할 프레임워크를 제공한다.  

SCORM 2004를 출시하면서 ADL은 version 매기는 방법을 변경해 각 서적을 독립적으로 보관할 수 있도록 했다.
규격의 가짓수와 문서의 방대한 크기 때문에 문서 세트에 맞는 개정 및 수정 과정은 필수과정이다.  

SCORM은 규격과 표준을 통합한 것이다.
SCORM은 이러닝 커뮤니티에서 지속적인 훈련 이행을 보증하는 특정 콘텐츠 모델을 사용하면서
기술교육부문에 현 개발과정을 적용시킨다.


SCORM은 the Aviation Industry Computer-Based Training (CBT) Committee (AICC),
the IMS Global Learning Consortium, Inc., the Institute of Electrical and Electronics Engineers (IEEE),
the Alliance for Remote Instructional Authoring and Distribution Networks for Europe (ARIADNE),
그리고 그 외 다른 조직들이 주축이 되어 서로 연관돼 있는 기술적 규격과 가이드라인을 하나로 통합하는
 '참조모델'을 만들게 된다.
 이 참조모델은 웹 기반 학습 콘텐츠와 시스템에 필요한 고급사양의 국방부 요구사항을 만족시키는 것이다.

1. 스콤의 영향
콘텐츠 공급자, 교수설계자, 프로젝트 매니저들은 모두 SCORM이 프로젝트에 필요한 요구사항을 어떻게 충족시키는지에 대해 관심이 많다.  
콘텐츠 공급자들은 SCROM이 학습 객체를 어떻게 재사용하도록 만들어주는지 신속하게 보게 될 것이다. 교수 설계자들은 SCORM을 통해 재사용가능한 콘텐츠와 성공적으로 수행되는 콘텐츠 배열 전략을 인식하게 될 것이다.  
프로젝트 매니저들은 재사용가능한 콘텐츠를 이행하는 데 필요한 전략계획을 인지하고 이를 수행할 때 개발시간과 비용을 절감할 수 있음을 깨닫게 될 것이다.  
 
2. 스콤의 혜택
SCORM 도입으로 중요한 혜택을 볼 수 있다 : 
 - 상호운용성 : 한 장소에서 한 세트의 도구 및 플랫폼으로만 개발되는 교육적 요소들을 도입해서 이를 다른 장소, 다른 세트의 도구와 플랫폼으로도 사용하는 능력.  
 - 접근가능성 : 원격지에 있는 교육적 요소를 배치하고 이에 접근해 몇몇 다른 장소에도 이 요소들을 전달하는 능력.
 - 재사용가능성 : 교육적 요소들을 다수의 응용프로그램과 문맥들에 적용하는 능력.  
 - 내구성 : 비용을 들여 디자인을 다시 하거나, 구조변경, 혹은 코딩작업을 다시 하지 않고도 변동사항과 기술진화에 대처하는 능력.  
 - 유지보존성 : 비용을 들여 디자인을 다시 하거나 구조변경, 혹은 코딩작업을 다시 하지 않고도 콘텐츠 진화와 변동사항을 버티는 능력.  
 - 적합성 : 개인적인 수요와 조직적인 수요에 대한 지시사항에 맞추는 능력.  
 
SCORM이 유용하게 사용될 경우에는 학습자들을 추적하는 복잡한 교육적 행위를 사용할 때나, 학습자의 실수에 반응해 대응하는 구조물을 사용하는 것, 그리고 평가 항목의 효율성을 결정하기 위해 추적하는 항목을 사용할 때 등을 꼽을 수 있다.


3. 스콤의 역사

교수의 목적이 주로 정보를 제공하기 위한 것이라면, 이는 곧 분류된, 혹은 독점적인 정보만을 포함하고 있어 재빨리 쓸모가 없어지거나 소규모 학습자 그룹들에서나 관심을 가질 법하다. 그렇게 되면 SCORM의 혜택이 별로 없을 수도 있다.

1999년 1월, 공공 및 민간 부문에서 기술 기반의 학습용 공통 규격과 표준 개발을 주도하려는 미국방부의 전략에 따라 Executive Order 13111의 서명이 준비되었다. 그 후 SCORM의 처음 Version이 개발되었고 새롭게 형성된 ADL Initiative를 지원하기 위해 이들 공공 부문과 민간 부문의 업무를 통합하고 연결짓기 시작했다. ADL은 SCORM 작업을 통해서 한창 급부상하고 있는 많은 표준과 규격을 하나의 공통적인 참조모델로 통합한다.

출처 : http://blog.naver.com/kmsook7/50011416526
Posted by 시난
프로젝트2007.01.21 00:06
사용자 삽입 이미지


1. 목적

아내가 애인이였던 시절
담임을 하고 있었는데.. 자리 배치에 고민이 참 많았다.

어떻게 하면 고민을 덜어줄까 생각하다가
개발하게 되었다.

     
2. 설계

- 자리 배치는 여러개의 책상 오브젝트로 화면에 나타낸다.
- 책상 오브젝트는 여러 종류의 형식을 설정할 수 있게 한다.
형식에는
빈 자리,
여자, 남자 자리
눈이 나쁜 학생을 위한 자리
특정 학생의 자리
등을 지정하고
학생 정보는 txt 타입으로 작성하여
임포트(로드) 하거나
- 직접 화면에서 하나씩 등록한 다음 익스포트(저장)할 수 있게 한다.
- 자동 자리 배치 수행시, 현재 학생목록의 정보를 가져온 다음
랜덤으로 자리를 배치한다. 각 자리 배치 조건은 책상 오브젝트의 타입을 따른다.
- 책상은 한 개나 여러개를 선택하여 화살표로 이동시킨다.
- 현재 선택된 책상은 붉은 굵은 선으로 책상에 효과를 준다.

[화면 구성]
크게 2개의 프레임으로 구성
왼쪽 화면은 메뉴와 책상을 표현하는 화면으로 구성한다.
메뉴는 메뉴와, 툴바 버튼 메뉴로 구성.
아래쪽은 그리드형태로 베이스를 그리고
그 위에 배열로 저장된 책상을 그려준다.
책상의 속성에 대한 정보는 색상과 아이콘으로 책상에 표현된다.



3. 구현

- VC 6.0으로 개발. UI를 위해 별로 dll을 로드하여 office2003 스타일을 사용한다.
- txt를 읽고 쓴다.
- 키보드 처리를 하여 화면의 오브젝트들을 이동시키고 메뉴를 이용한다.
- 화면의 선택된 정보와 툴바의 정보를 일치시킨다.

4. 개발 기간
- 3일 정도

5. 완성도 85%





'프로젝트' 카테고리의 다른 글

ActiveX 웹에디터  (0) 2008.06.21
마우스 제스쳐를 이용한 애니메이션 제어  (0) 2008.06.21
Big Hit! - 비디오 대여 시스템  (0) 2008.06.21
Last Exile - OpenGL 슈팅 게임  (0) 2008.06.21
자리 배치 프로그램(2005년 9월)  (2) 2007.01.21
이 분류의 목적  (0) 2007.01.20
Posted by 시난