RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
HTML/FLEX  2008/02/20 14:02
 
플래시는 내부적으로 유니코드를 사용하며 기본적으로 모든 데이터를 유니코드(UTF-8, Universal Character Set Transformation Format, 8 bit)로 다룬다. 경우에 따라 URL을 다루거나 외부와 통신을 할 때 UTF-8가 아닌 운영체제가 사용하는 인코딩을 그대로 써야 할 경우가 있다. 예를 들어, 웹 서버가 기본적으로 UTF-8을 인코딩을 사용하지 않고, KSC5601(EUC-KR)을 사용하는 경우이다. 이런 호환성을 위해 플래시 MX에 System.useCodepage이 추가됐다.

System.useCodepage는 입출력에 유니코드를 쓸 것인지(false) 아니면 플래시 플레이어가 동작하고 있는 운영체제의 기본 인코딩 언어(로케일)을 사용할 것인지(true)를 결정한다. 한글 윈도우에서는 기본적인 인코딩은 KSC5601(EUC-KR)이다. 만일, 일본어 윈도우라면 기본 인코딩은 SJIS가 된다. 즉, SWF가 수행되는 환경의 인코딩을 사용하게 된다. 운영체제의 인코딩을 그대로 사용하려면, 보통 무비 타임 라인의 첫 프레임에 다음과 같은 코드를 넣어 준다.

System.useCodepage = true;

SWF는 내부적으로 UTF-8만 다루며 이것을 바꾸는 방법은 없다. 또한 코드페이지를 지정하는 방법도 없다. 따라서 useCodepage가 true인 경우는 SWF가 수행되는 운영체제의 코드페이지를 따라가며, false인 경우는 유니코드(UTF-8)을 사용하게 된다. 플래시가 내부적으로 사용하는 UTF-8은 유니코드의 각 문자를 1~4개의 바이트로 인코딩한 형태인데 다음과 같은 액션 스크립트를 통해 쉽게 확인할 수 있다.

System.useCodePage= false; // 코드페이지 사용 안함(UTF-8)
trace(escape("abc가나다"));
System.useCodePage= true; // 코드페이지 사용(EUC-KR)
trace(escape("abc가나다"));

이 코드는 다음과 같이 출력된다. escape는 URL에 사용하기 위해 %가 붙은 형태로 인코딩하는 함수이다. 이 코드는 다음과 같이 출력된다.

abc%EA%B0%80%EB%82%98%EB%8B%A4
abc%B0%A1%B3%AA%B4%D9

UTF-8인 경우, 한글의 한 글자가 3개의 바이트로 인코딩되었음을 알 수 있다. useCodePage가 true인 경우는 한글 한 글자가 2개의 바이트가 된다.
2008/02/20 14:02 2008/02/20 14:02
이 글에는 트랙백을 보낼 수 없습니다
HTML  2008/02/06 13:45
P3P의 압축정책 Spec
개인 정보 태그 압축 토큰
<contact-and-other/> CAO
<pseudo-analysis/> PSA
<contact required="opt-in"/> CONi
<other-recipient/> OTR
<ours/> OUR
<demographic/> DEM
<online/> ONL

범주 압축 토큰 설명
<physical/> PHY 연락처 또는 위치 정보
<online/> ONL 인터넷 상의 연락처 또는 위치 정보(예: 전자 메일 주소)
<government/> GOV 정부에서 발급한 ID(예: 사회 보장 번호)
<financial/> FIN 개별 재무 정보

용도 압축 토큰 설명
<customization/> CUS 사용자에 의해 명시적으로 요청된 사이트 수정
<individual-analysis/> IVA 개별 사용자와 관련될 수 있는 분석
<individual-decision/> IVD 사용자 기록에 기초한 동작 수행
<contact/> CON 개별 사용자에게 연락하는 데 사용할 수 있는 정보
<telemarketing/> TEL 전화 판촉에 사용할 수 있는 정보
<other-purposes/> OTP 다른 P3P 용도 이외의 기타 용도

수신인 압축 토큰 설명
<same/> SAM 일관된 관례에 따라 고유한 목적에 데이터를 사용하는 정식 항목
<delivery/> DEL 주어진 용도 이외에 목적에 데이터를 사용할 수 있는 배달 서비스를 수행하는 정식 항목
<other-recipient/> OTR 공급자에게 책임이 있지만 알려지지 않은 방법으로 데이터를 사용할 수 있는 항목
<unrelated/> UNR 공급자에게 알려지지 않은 방법으로 데이터를 사용하는 항목
<public/> PUB 공개 포럼

여기에 안나온것들은

http://www.w3.org/TR/P3P/ 이곳에서 살펴봐라.

또 영어라고 울렁증 걸릴텐데 -_- 제가 찾아보니..

4.2 Compact Policy Vocabulary

여기부분을 봐라 ㅡㅡ 쫌 !!

쫌 알고 쓰자 -_-;;;

그리고 이건 덤으로 ...

The Situation

The other day I came across a weird security problem at work: While a system to customize a site's appearance worked fine in Firefox, storing the state kept failing in IE. Now, I'm not a big fan of these browser discussions and don't mind using either, but that error made me curious. I quickly found out that it was down to the company's security standard, which defaulted IE's privacy level to high-medium. This level doesn't allow third-party cookies for permanent storage, and as the whole site was running in a Frameset for a couple of days (thank you, domain-hogging cheapie-host), the cookies used were rightly considered third party.

They are allowed to be stored under this setting, though, when they come with a P3P (Platform for Privacy Preferences) policy. Microsoft offers a nice overview to what this is, but leaves you pretty much in the dark of how you actually get from A (Problem) to B (Solution). P3Ptoolbox.org, a website dedicated to P3P offers an all-embracing guide, but the sheer amount is more off-putting than encouraging.

What Is P3P?

P3P is a protocol designed to offer an "automated way for users to gain more control over the use of personal information on Web sites they visit", states the W3C. Policies are something that is used quite frequently, in the Flash and Java (J2EE) World, usually describing a set of permissions granted or revoked. P3P is an XML based policy that describes the scope or the way how the data in cookies is used. It consists of four logical parts:

  • a written, and as they like to state "human readable" policy, as html-file is recommended as the easiest starting point for it all. But, hooray, if you rather track down cookie operations in your code, the policy editor will generate one for you, which you can then amend to your needs.
  • The policy editor helps you create the full XML privacy policy
  • The Policy-Reference File, again as XML, which is stored in a "well-known location", links to the privacy policy.
  • The compact policy(a string of 3-letter-abbrevations), which is sent in the header of the page containing the cookie-related action.

How can I build it?

If you look into tools for generating P3P policies, you'll find yourself in a land of darkness and badly designed websites with dollar signs. But there's light at the end of the tunnel: The IBM P3P Editor is free, being an executable jar it's crossplatform, and if you know what you're doing, it's really easy. So what do you have to do?

  1. Do your homework: the first step is, and the P3Ptools site isn't wrong with it, a thorough preparation. Does the company running the website already have a privacy policy? Does it cover all cookie-related actions as well? If not, "Where do you store and read out cookies?", and "What's stored in them?" are the first key questions to ask. Ideally you know it beforehand, if not, an extended search over the usual cookie-dealing functions should refresh your memory.
  2. What to do with the data? Who will be dealing with it? Once you have figured out what it is you'll need to ask yourself or, even better, your client, if they are planning to use the requested data, e.g. for stats on returning users or to find out about preferred customizations and the like. This should be (again ideally) honest, or alternatively passed by a legal department that does the juggling of the words.
  3. Fire it up. The IBM P3P policy editor luckily generates XML and P3P strings as well as a good skeleton for the written privacy policy. All you have to do is
    • To categorise your cookies into groups and usage.
    • Connect them to their purpose
    • Add information about dispute and contact possibilities
    • Generate policy
    • Deploy: A great word which took me a while to understand, back at university. In this case, all it means is to take the generated xml and html and drop it in a folder.

An example

Let's say we set and read a cookie on the homepage that stores a unique ID for tracking reasons and retrieves preferences from the db on how the site is displayed (font size and regular/high-contrast layout, for example).

Open up the P3P editor, choose "create a blank policy", and you'll find a well categorized list of elements on the left, and an empty tree on the right.

IBM P3P Editor screenshot 1

Locate and drag the data elements matching your purpose from the list into the "new group" on the right. In our case that's:

Broad Categories --> unique identifier and
Dynamic Data --> http cookie

You can edit the group name, and you'll probably want to do it in real life situations that are more complex - in order to find grouped entries easier later on.

When you do so, you are also asked to put down an explanation to why the data is requested and you have to decide if "there is no reasonable way to link this data to the visitor's real-world identity." (check the help button). As users don't register on my site, they will be unique by identifier, but I won't be able to find out who they really are. The display data is anonymous anyway, so, tick the box here as well. Describe the reasons then on to the next step.

Make your way through the tabs, I will check "Site customisation" and "Anonymous user tracking", I offer an opt-out possibility for the site customisation, and uncheck pseudonymous decision-making, as I’m not tracking that. Recipient is just me, and as Retention I choose indefinitely.

To the right of the tabs in the lower part of the window is a properties button, click that to add all necessary data for the website, starting with a full contact information of the person/organisation responsible for the site.

Click on the next tab to enter a generic name for the policy and add an opt-out url (essentially a page where you can choose to get all cookies from your site deleted).

Make sure your language selection is the right one and add the url for your privacy policy on your website.

The Access-tab wants you to indicate what personal data the user can view to doublecheck what's stored on your site. In my case: no identified data is collected.

Next, let's eliminate that dispute warning: go to "Assurances", and add a dispute. I call it "all disputes" chose customer service as dispute remedy for "all disputes", with a link to contact-us, to reach the customer service.

Lastly, in the global properties, set the expiry date. I chose the same as the cookies lifetime, or up to a date when the cookie situation, and therefore the privacy policy, changes.

The easiest way to get rid of the must-haves is to eliminate one error after the next. Click the error tab to see them. If you have any other errors, fix them accordingly... it's most probably in your data group, or it’s a conflict between your data elements, the group and global properties.

All done? I had to add a category to my HTTP cookie. Now it looks like this:

Save it, and go to the final step: deploy your data. For that, you'll need to generate a reference file first. Here's one that fits my example - it directs to the P3P file in all cases (include \*).

<META xmlns="http://www.w3.org/2000/12/p3pv1">
 <POLICY-REFERENCES>
    <POLICY-REF about="testsite_com.p3p">
       <INCLUDE>\*</INCLUDE>
       <COOKIE-INCLUDE name="*" value="*" domain="*" path="*"/>
    </POLICY-REF>
 </POLICY-REFERENCES>
</META>

All you have to do now, is:

  • Save the P3P reference file in a folder called w3c in the webroot, as /w3c/p3p.xml. Feel free to look at my example reference.
  • Save the P3P. You can see from how I set up the reference file that I chose to store it in the same folder, which is the easiest and most common thing. Here's my example p3p policy for download
  • Every time you interact with the cookie, send the created header first. Below is an overview of how to do it for my example, taken directly from the privacy council.
  • Finally: Take a look at it (in IE: view-->privacy report).
P3P compact policy implementations
Method Code
HTML <meta http-equiv="P3P" content="CP='NOI DSP NID TAIo PSAa OUR IND UNI OTC TST'">
PHP Header("P3P: CP='NOI DSP NID TAIo PSAa OUR IND UNI OTC TST'")
ASP Response.AddHeader "P3P","CP='NOI DSP NID TAIo PSAa OUR IND UNI OTC TST'"
JSP Response.setHeader("P3P","CP='NOI DSP NID TAIo PSAa OUR IND UNI OTC TST'")
ColdFusion <cfheader name="P3P" value="CP='NOI DSP NID TAIo PSAa OUR IND UNI OTC TST'" />

Conclusion

Congratulations, you made through this dry and rocky path of an article, or alternatively you found the scrollbar overly useful. I've had my doubts while writing this, about how complex it should be, and decided to go for an overview with a simple A-Z example, as my key problem was piecing it together initially.

P3P doesn't end here though - there are many more possibilities, from setting up different policies for different parts of a website, to getting deeper into the personal data aspect (there's quite a difference in cookie handling with P3P when personal data is involved), to taking a closer look into the client side and the possibilities that P3P offers, which mostly aren't quite built into browsers yet.

The idea of P3P is a good one, but it's flawed, as it's so far based on honesty. If I used information differently than I stated in my P3P policy, how would the user ever know? If developers use half-hearted workarounds by simply adding a non-offensive P3P header, why would the user trust P3P? These are the first things that you'll ask yourself while spending time on this, but there's more elaborated critizism: the Electronic Privacy Information Center has assessed P3P and is not happy at all with it. So why do it? Given you do use cookies, 3 reasons come to mind, and they seem oddly close to web standards (looking forward to the comments):

  • Because you have to: I don't use cookies very much, maybe a couple of projects a year. But if I do and it doesn't work for a group of users or, even worse (*gasp*) the client, heck, I gotta make it work.
  • Because you would rather solve problems than work around them: I never like grey areas in projects, identified ones or the ones that are brushed off. The fix-it-now-research-it-later approach usually ends in not researching it at all, and next time round you're none the smarter.
  • Because it makes a better website: This is the moral high ground for today, but think about it: the web standards movement is something that had to happen sooner or later. Cookies aren't used as much as in the olden days, but as the basics are set and can be extended, any improvement in their handling should improve users trust in using personal data on the internet, with reasonable resonance in the future.

2008/02/06 13:45 2008/02/06 13:45
이 글에는 트랙백을 보낼 수 없습니다
플래시 애니메이션에서 가속도는 여러 곳에서 많이 응용됩니다.

이 가속도효과는 탄성을 주는 효과, 원운동하는 효과, 나선운동이라든지 점차 퍼져나가는

효과등에 응용되어 시각적으로 재미난 효과를 얼마든지 만들어 낼 수가 있지요.


그래서 이번장에는 가속도의 기본개념을 설명하고 다음장에서는 몇가지 간단한 응용예를

들어 보기로 하겠습니다.

먼저 애니메이션에서 가속도효과란 임의의 위치에서 특정위치(타겟점이라 하지요.)로

가는동안 일정 속도를 계속 더해주는 경우와 일정순간까지 속도가 붙다가 점차 타겟점에

다다르면 속도가 속도가 점점 줄어 들어 타겟점에서는 속도가 0이 되는 경우로 나눌수가

있겠네요.

먼저 첫번째경우부터 설명하지요.

즉 속도를 계속적으로 더해가는 경우입니다. 공식으로 적어볼까요?

속도 = 속도 * 가속하려는 수치

위의 공식은 다음과 같이 적을수가 있습니다.

속도 *= 가속하려는 수치(여기서 *=의 의미는 오른쪽의 수치를 왼쪽에 계속 곱하라는 뜻입니다.)

위와같이 왼쪽의 속도는 오른쪽의 가속하려는 수치를 계속 곱해줌에 따라 증가를 계속하게 될것입니다.

그렇다면 이때 이 물체의 위치는 어떻게 될까요? 이 물체의 위치는 기존 물체가 있던 위치에다 위의

속도(가속도가 계산된 값)을 더한 값이 될겁니다. 이것도 공식으로 나타내면

물체의 위치 += 속도

여기까지 이해가 되시지요?


그럼 위의 공식을 애니메이션에 적용해 보겠습니다.

자 플래시를 띄우고 원을 하나 그린다음 원을 마우스로 블럭설정한뒤 F8을 눌러 심볼로 등록합니다.

그런다음 다시 원을 선택해서 심볼로 변한 이 원에 다음의 코드를 적습니다.



//맨먼저 무비클립이 로드되면 초기값을 설정해줍니다.
onClipEvent (load) {

//그다음 속도를 1로 설정하고 가속도계수는 1.1로 설정해보죠.
sokdo = 1;
gasokdo = 1.1;
}

//이제 매프레임들이 연속될때마다 적용될 코드를 적어줍니다.
onClipEvent (enterFrame) {

//속도에 가속도계수를 곱해주고
sokdo *= gasokdo;

//그 속도를 현재 이 무비클립의 위치에 계속 더해줍니다.
this._x += sokdo;

//그런다음 무비클립의 x 축 위치가 400이 넘으면 다시 위치 0으로 돌아가고 가속도계수는 0으로 설정하여 멈추게합니다.
if (this._x > 400) {
this._x = 0;
gasokdo = 0;
}
}

위의 결과는 다음과 같습니다.



위 의 결과물은 원래 한번만 실행되고 말지요. 그래서 저는 버튼을 달아보았습니다. 여러분께서도 버튼을 직접 달아본다면 아시겠지만 버튼에 재실행하라는 명령을 주기위해선 함수를 사용해야 한다는걸 눈치채셨을겁니다. 재실행하는 경우 함수가 딱입니다.

그렇다면 버튼을 달고 함수를 응용한 최종 결과물의 소스는 어떻게 될까요? 다음과 같습니다.

onClipEvent (load) {
sokdo = 1;
gasokdo = 1.1;

//다음 부분을 추가하시면 됩니다.
function moveto(a, b) {
sokdo = a;
gasokdo = b;
}

}
onClipEvent (enterFrame) {
sokdo *= gasokdo;
this._x += sokdo;
if (this._x>400) {
this._x = 0;
gasokdo = 0;
}
}


그 다음은 버튼을 달고 F8을 눌러 버튼으로 만든뒤 다시 버튼을 클릭하여 다음과 같은 코드를 적어놓으시면 됩니다.

on(press){
_root.circle.moveto(1,1.1);

}

여 기서 _root.cicle라는 코드보이시죠? 이 말은 루트(메인화면)에 있는 원(무비클립)의 공식적인 이름을 cicle로 정했다는 겁니다. 어떻게 정하냐고요? 우리가 만든 원을 한번 클릭한뒤 밑의 속성창의 맨 왼쪽면을 보시면 [인스턴스 이름]이라고 씌여있는 부분에 cicle를 적어주면 되지요.

잘 알아 두십시요. 플래시에서 모든 무비클립의 이름은 이 창에 적어논 이름으로만 인식한다는 것을요. 우리가 심볼(무비클립심볼이나 그래픽심볼, 버튼심볼)로 만들때 누르는 F8에서 적는 아무 이름은 전혀 플래시가 인식 못합니다. 그건 그냥 우리가 심볼을 만들때 개인적으로 구별하기 위한 이름일뿐입니다.
2008/01/21 19:46 2008/01/21 19:46
이 글에는 트랙백을 보낼 수 없습니다
HTML  2008/01/15 20:43
DL
  • DL 태그는 리스트 항목을 선언하는 태그 입니다.
  • DL 태그로 선언된 후에 DT 태그에 "항목명"을 DD 태그에 "설명"을 붙여줍니다.

형식 :
    <DL> <DT>여기에 용어의 이름을 쓴데여~~~</DT> <DD>여기에는 용어에 대한 설명을 써야겠져?</DD> <DT>허웅</DT> <DD>귀엽다. 개구장이다.</DD> </DL>
결과 :
    여기에 용어의 이름을 쓴데여~~~
    여기에는 용어에 대한 설명을 써야겠져?
    허웅
    귀엽다. 개구장이다.




DT
  • DL 태그 내부에서 정의되는 구절이나 단어를 정의합니다.





DD
  • DT 태그로 지정된 문서의 내용을 지정하는데 이용합니다.





LI
  • 리스트의 각 항목을 적을 때 이용되는 태그입니다.

형식 :
    <LI>이 글자 앞에 보이는 "동그라미"가 LI 태그가 적용된 겁니다.</LI><br /> <LI>끝나는 태그가 없어도 상관없어요.<br />
결과 :
  • 이 글자 앞에 보이는 "동그라미"가 LI 태그가 적용된 겁니다.
  • 끝나는 태그가 없어도 상관없어요.



OL
  • 숫자 혹은 알파벳 또는 로마자 등을 이용하여 리스트화하는 기능을 갖습니다.

  • 각 항목은 LI 태그를 이용합니다.
  • 이 때, LI 태그의 속성으로 "TYPE 속성"을 사용할 수 있습니다.
  • TYPE 속성의 값으로는 A(알파벳 대문자), a(알파벳 소문자), I(로마숫자 대문자), i(로마숫자 소문자) 등을 사용합니다.

형식 :
    <OL> <LI>장미 <LI>봉선화 <LI>진달래 </OL> <br /> <OL START="100"> <LI>장미 <LI>봉선화 <LI>진달래 </OL> <br /> <OL> <LI TYPE="a">장미 <LI TYPE="a">봉선화 <LI TYPE="a">진달래 </OL> <br /> <OL> <LI TYPE="A">장미 <LI TYPE="A">봉선화 <LI TYPE="A">진달래 </OL> <br /> <OL> <LI TYPE="i">장미 <LI TYPE="i">봉선화 <LI TYPE="i">진달래 </OL>
결과 :
    1. 장미
    2. 봉선화
    3. 진달래

    1. 장미
    2. 봉선화
    3. 진달래

    1. 장미
    2. 봉선화
    3. 진달래

    1. 장미
    2. 봉선화
    3. 진달래

    1. 장미
    2. 봉선화
    3. 진달래



UL
  • 일정한 항목이나 리스트같은 것을 표현할 경우에 사용됩니다.
  • 각 항목은 LI 태그를 사용합니다.

  • 그러나 사용만 잘하면 꼭 그렇게 하실 필요 없겠죠?
  • 저 같은 경우 P 태그는 잘 사용을 하지 않습니다. ---> 습관상
  • 그래서 문단의 들여쓰기 기능이 필요할 경우에는 UL 태그를 주로 사용합니다.

  • UL 태그의 속성으로는 "TYPE 속성" 있습니다.
  • TYPE 속성의 값으로는 "disk, square, circle"의 세 종류가 있습니다.

형식 :
    <UL type="disk"> <LI>장미</LI> <LI>봉선화</LI> <LI>진달래</LI> </UL> <UL type="square"> <LI>장미</LI> <LI>봉선화</LI> <LI>진달래</LI> </UL> <UL type="circle"> <LI>장미</LI> <LI>봉선화</LI> <LI>진달래</LI> </UL>
결과 :
  • 장미
  • 봉선화
  • 진달래
  • 장미
  • 봉선화
  • 진달래
  • 장미
  • 봉선화
  • 진달래




DIR
  • DIR 태그는 항목의 리스트를 나열하는 목적으로 사용됩니다. UL 태그와 동일한 기능이므로 가능하면 UL 태그를 이용하는 것이 좋습니다.

  • 20글자 이내의 짧은 항목 리스트를 만들 때 이용됩니다.

형식 :
    <DIR> <LI>리스트 - 1</LI> <LI>리스트 - 2</LI> <LI>리스트 - 3</LI> </DIR>
결과 :
  • 리스트 - 1
  • 리스트 - 2
  • 리스트 - 3




MENU
  • MENU 태그는 메뉴의 리스트를 나열하는 목적으로 사용됩니다. 속성은 COMPACT가 있으나 대부분의 웹브라우저에서는 지원하질 않습니다. 유사한 기능의 UL 태그를 사용하시는 것이 더욱 좋습니다.

형식 :
    <MENU> <LI>리스트 - 1</LI> <LI>리스트 - 2</LI> <LI>리스트 - 3</LI> </MENU>
결과 :
  • 리스트 - 1
  • 리스트 - 2
  • 리스트 - 3
2008/01/15 20:43 2008/01/15 20:43
이 글에는 트랙백을 보낼 수 없습니다

[오픈소스샘플모음] http://www.quietlyscheming.com/blog/

[flexlib] http://code.google.com/p/flexlib/
[Flexed] http://flexed.wordpress.com/ 
[익스플로러] http://demo.quietlyscheming.com/ChartSampler/app.html 
[샘플소스모음] http://tech.groups.yahoo.com/group/flexcomponents/database (로긴)
[RSSReader] http://renaun.com/flex2/MXNARSSReader/srcview/
[mxmlc] http://www.senocular.com/flash/tutorials/as3withmxmlc/
[TREE] http://cflex.net/showFileDetails.cfm?ObjectID=554&Object=File&ChannelID=1
[GRID] http://thanksmister.com/dnddatagrid/index.html
[TAB] http://everythingflex.com/flex2/MultiRowTabs/Index.html
[COMPONENT] http://shigeru-nakagaki.com/index.cfm?C
 
[*] http://www.shockwave-india.com/blog/
[*] http://www.cynergysystems.com/blogs/page/andrewtrice?entry=flex_2_bitmapdata_tricks_and
[*] http://www.cynergysystems.com/blogs/page/keunlee
[*] http://weblogs.macromedia.com/auhlmann/archives/2006/11/download_distor.cfm#more
[*] http://dougmccune.com/blog/
[*] http://recycle.andre-michelle.com/
 
[CHART] http://www.stretchmedia.ca/code_examples/offset_calculator/SeriesOffsetCalculator.html
[CHART] http://www.stretchmedia.ca/code_examples/chart_range_selection/main.html
[CHART] http://flexapps.macromedia.com/flex2beta3/chartexplorer/explorer.html
[CHART] http://demo.quietlyscheming.com/ChartSampler/app.html
[STYLE] http://www.merhl.com/flex2_samples/filterExplorer/


[*] http://graemeharker.blogspot.com/2006/06/flex-and-net-tutorials-1.html
[*] http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
[STYLE] http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html

 
[Certification Program Planning Guide] http://www.donathgroup.com/pdf/DonathCERTPlanGuide.pdf 
 
[Artemis] http://artemis.effectiveui.com/
[Cairngen] http://www.ericfeminella.com/blog/2007/05/09/cairngen-ant-tasks-12-release/
[Presentations for new Web] http://www.spresent.com/v2/ 
[flexibleexperiments] http://flexibleexperiments.wordpress.com/
[renaun] http://renaun.com/blog/code-examples/ 
 
[del.icio.us 에 즐겨찾기된 사이트] http://del.icio.us/tag/flex2?page=1 
 
[component] http://flexbox.mrinalwadhwa.com/ 
 
[Flash Sample] http://www.adobe.com/support/documentation/en/flash/samples/
[Flash Resource] http://www.adobe.com/support/documentation/en/flash/ 
 
[*] http://tools.assembla.com/flashcomponent/changeset/4/flashComponentAnalysis/flex2  
[*] http://www.fullasagoog.com/

2008/01/15 13:02 2008/01/15 13:02
이 글에는 트랙백을 보낼 수 없습니다
from.Элитные двери входные  2021/09/26 11:39
상상플러스 :: Flex 오픈소스 사이트 모음
from.Матрас ортопедический купить кривой рог  2021/09/27 20:45
상상플러스 :: Flex 오픈소스 사이트 모음
from.Кривой рог тканевые натяжные потолки  2021/09/30 11:28
상상플러스 :: Flex 오픈소스 사이트 모음
from.окна кривой рог  2021/10/15 16:49
상상플러스 :: Flex 오픈소스 사이트 모음
from.Натяжные потолки кривой рог цены  2022/04/22 18:44
상상플러스 :: Flex 오픈소스 사이트 모음
from.Натяжные потолки в кривом роге цены  2022/08/27 06:41
상상플러스 :: Flex 오픈소스 사이트 모음
from.Матрасы ортопедические кривой рог цена  2023/05/05 19:13
상상플러스 :: Flex 오픈소스 사이트 모음
from.Металлические двери входные  2023/06/03 22:37
상상플러스 :: Flex 오픈소스 사이트 모음
from.заказ кухни в хрущевку в кривом роге  2023/09/17 19:39
상상플러스 :: Flex 오픈소스 사이트 모음
from.webpage  2024/01/16 13:54
상상플러스 :: Flex 오픈소스 사이트 모음

initMouseEvent

void initMouseEvent(String  typeArg,
boolean canBubbleArg,
boolean cancelableArg,
org.w3c.dom.views.AbstractView viewArg,
int detailArg,
int screenXArg,
int screenYArg,
int clientXArg,
int clientYArg,
boolean ctrlKeyArg,
boolean altKeyArg,
boolean shiftKeyArg,
boolean metaKeyArg,
short buttonArg,
EventTarget  relatedTargetArg)

initMouseEvent 메소드는,DocumentEvent 인터페이스에 의해 작성된 MouseEvent
값을 초기화할 경우에 사용합니다. 이 메소드는,MouseEventdispatchEvent 메소드를
개입시켜 디스팟치 되기 전에 한해 불려 갑니다만, 필요한 경우는 초기화할 단계에서 여러
차례 불려 가는 일도 있습니다. 여러 차례 불려 갔을 경우는, 마지막 호출이 우선됩니다.


파라미터:
typeArg - 이벤트의 형태
canBubbleArg - 이벤트를 버블 할 수 있을지 어떨지
cancelableArg - 이벤트의 디폴트 액션을 억제할 수 있을지 어떨지
viewArg - EventAbstractView
detailArg - Event 의 마우스의 클릭수
screenXArg - Event 의 화면상에서의 x 좌표
screenYArg - Event 의 화면상에서의 y 좌표
clientXArg - Event 의 클라이언트의 x 좌표
clientYArg - Event 의 클라이언트의 y 좌표
ctrlKeyArg - Event 의 사이에 Ctrl 키가 밀렸는지 어떠했는지
altKeyArg - Event 의 사이에 Alt 키가 밀렸는지 어떠했는지
shiftKeyArg - Event 의 사이에 Shift 키가 밀렸는지 어떠했는지
metaKeyArg - Event 의 사이에 Meta 키가 밀렸는지 어떠했는지
buttonArg - Event 의 mouse button
relatedTargetArg - Event 에 관련하는 EventTarget



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Event Fake </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function attachEvent(obj,evtType,handler){
if(typeof obj == 'object' && obj != 'undefined' && obj != '' && obj != null){
obj.addEventListener(evtType,eval(handler),false);
}
}

function initEvt(){
var btn  = document.getElementById('btn');
var btn2 = document.getElementById('btn2');

attachEvent(btn,'click','kk');
attachEvent(btn2,'click','jj');
}

function kk(){
alert(1);

var obj = document.getElementById('btn2');
var evt = document.createEvent('MouseEvents');
evt.initMouseEvent('click',true,true,window,0,0,0,0,0,false,false,false,false,0,null);

obj.dispatchEvent(evt);
}

function jj(){
alert(2);
}
//-->
</SCRIPT>
</HEAD>

<body onload=" initEvt();">
<input type="button" id="btn" value="click" />
<input type="button" id="btn2" value="click2" />
</body>
</html>


이곳 참조 사이트는 == http://developer.mozilla.org/en/docs/DOM:document.createEvent
이다. 사실 위에 글보다 이링크가 훨씬 보기 좋다 ;; 아직 한글화 안됨
2008/01/14 15:26 2008/01/14 15:26
이 글에는 트랙백을 보낼 수 없습니다
먼저 난 HTML 잘 모른다 -_- 플밍은 잘 모르겠지만 ;;

HTML 잘  그래서 아래 사이트를 많이 이용한다..


http:/www.w3schools.com/tags/tag_dt.asp


위사이트 굳이다.

더 좋은곳있으면 .. 알려줘여 ㅠㅠ
2008/01/10 13:59 2008/01/10 13:59
이 글에는 트랙백을 보낼 수 없습니다
HTML/Ajax  2008/01/04 17:53
Content-Type은 Internt Media 타입이다. 그러나 왜 알아야 하는 가는 웹 서버 로그의 Content-Type을 보고 어떤 어플리케이션이 사용되어 있는지를 파악할 때 도움이 된다. 또한 웹 포렌식 작업을 할 때 실제 공격차단의 룰셋인지 아니면 정상적인 서비스인지의 룰인지를 판단해야 할 때 많은 도움이 될 것이다. 최근에는 웹 이외의 어플리케이션들이 HTTP+XML 형태로 사용을 많이 하기 때문에 오탐여부를 판단할 때 많은 도움이 된다.

1) Multipart Related MIME 타입
  - Content-Type : Multipart/related(기본형태)
  - Content-Type : Application/X-FixedRecord
  - Content-Type: Text/x-Okie; charset=iso-8859-1;

2) XML Media의 타입
 - Content-Type : text/xml
 - Content-Type : Application/xml
 - Content-Type : Application/xml-external-parsed-entity
 - Content-Type : Application/xml-dtd
 - Content-Type : Application/mathtml+xml
 - Content-Type : Application/xslt+xml

3) Application의 타입
 - Content-Type : Application/EDI-X12:  Defined in RFC 1767
 - Content-Type : Application/EDIFACT:  Defined in RFC 1767 
 - Content-Type : Application/javascript: Defined in RFC 4329
 - Content-Type : Application/octet-stream: <-- 디폴트 미디어 타입은 운영체제 종종 실행파일, 다운로드를 의미
 - Content-Type : Application/ogg: Defined in RFC 3534
 - Content-Type : Application/x-shockwave-flash: Adobe Flash files
 - Content-Type : Application/json: JavaScript Object Notation JSON; Defined in RFC 4627
 - Content-Type : Application/x-www-form-urlencode <-- HTML Form 형태


* x-www-form-urlencode와 multipart/form-data은 둘다 폼 형태이지만 x-www-form-urlencode은 대용량 바이너리 테이터를 전송하기에 비능률적이기 때문에 대부분 첨부파일은 multipart/form-data를 사용하게 된다.

4) 오디오 타입
- Content-Type : Type audio: Audio
- Content-Type : audio/mpeg: MP3 or other MPEG audio
- Content-Type : audio/x-ms-wma: Windows Media Audio;
- Content-Type : audio/vnd.rn-realaudio: RealAudio;  등등
 

5) Multipart 타입(아카이브 또는 개체)
- Content-Type : multipart/mixed: MIME E-mail;
- Content-Type : multipart/alternative: MIME E-mail;
- Content-Type : multipart/related: MIME E-mail; Defined in RFC 2387 and used by MHTML(HTML mail)
- Content-Type : multipart/formed-data : <-- 파일 첨부

6) TEXT 타입
- Content-Type : text/css
- Content-Type : text/html:
- Content-Type : text/javascript 
- Content-Type : text/plain:
- Content-Type : text/xml:


7) 기타 MIMERPC 예제들
가) HTTP with x/www-form-urlencoded 일반요청
POST /some/resource HTTP/1.1
Content-type: application/x-www-form-urlencoded
0=example.getStateName&1=10023


[응답]
HTTP/1.1 200 OK
Content-type: text/plain
New York


나) HTTP x/www-form-urlencoded namedArgs getTeam
POST /some/resource HTTP/1.1
Content-type: application/x-www-form-urlencoded
0=example.getTeam&state=New York&sport=Baseball


[응답]
HTTP/1.1 200 OK
Content-type: multipart/mixed, boundary=B
--BYankees

--BMets

--B


다) HTTP x/www-form-urlencoded unicode addUser
POST /some/resource HTTP/1.1
Content-type: application/x-www-form-urlencoded
0=example.addUser&fname=Igna%ACio&lname=Sanchez


라) HTTP with multipart/form-data 요청
POST /some/resource HTTP/1.1
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"


Joe Blow


--AaB03x 
content-disposition: form-data; name="pics"; filename="file1.gif"
Content-type: image/gif
Content-Transfer-Encoding: binary
...contents of file1.gif...


--AaB03x--

[응답]
HTTP/1.0 200 OK
Content-type: text/plain
OK


마) Uploading multiple files with unicode

POST /foo HTTP/1.0
Content-type: multipart/form-data, boundary=AaB03x


--AaB03x
content-disposition: form-data; name="field1"
Joe Blow


--AaB03x  <-- 여러개의 파일을 첨부할 때
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y

--BbC04y  <-- 첫번째 첨부파일은 텍스트
Content-disposition: attachment; filename="file1.txt"
Content-Type: text/plain; charset=UNICODE-1-1
Content-Transfer-Encoding: binary
... contents of some unicode file.txt ...


--BbC04y <-- 두번째 첨부파일은 이미지
Content-disposition: attachment; filename="file2.gif"
Content-type: image/gifContent-Transfer-Encoding: binary
...contents of file2.gif...

--BbC04y


----AaB03x--


바) XML and EMail 요청
HTP Request
POST /x/foo/bar HTTP/1.0
reply-to-url: callback@domain.com
message-id: abc123
aynch: required0=getAuthorization&1="bobjones"


[응답]
HTTP/1.0 200 OK
delivered-to: callback@domain.com
Content-length: 0
Mail/SMTP Response
To: callback@domain.comFrom: mimeRPC@otherplace.com
in-reply-to: abc123
content-type: text/xml
<?xml version="1.0"?><this><is /><xml /></this>

또한 간혹 Content-Type외에 x-vermeer-content-type 형태가 추가로 나오는 경우가 있는데 이것은 RPC 통신을 사용하는 것을 의미하며, 마이크로소프트 제품중에 SharePoint 서버 제품군과 프론트페이지가 이 x-vermeer-Content-Type를 사용하기 때문에 기억해 두기 바란다.

2008/01/04 17:53 2008/01/04 17:53
이 글에는 트랙백을 보낼 수 없습니다

날로 웹 어플리케이션의 UI가 복잡해지고 JavaScript를 이용해서 사용자와 웹 어플리케이션 간의 상호작용에 따른 특정 객체에 대한 접근과 조작이 점점 더 유행을 타게 되면서, 웹 브라우저의 창 속에 존재하는 어떤 한 객체의 정확한 크기와 위치 좌표 값을 얻는 일은 무척이나 중요해졌다. 하지만, 객체의 위치를 재는 방법과 그 속성은 헷갈릴 만큼이나 다양하고, 불행히도 웹 브라우저들 마다 같은 속성도 서로 다른 크기를 돌려준다. 그래서 여기에 DOM에 존재하는 한 객체의 크기와 자신의 위치를 나타내는 여러 속성 값들을 정리하고, 그림으로 나타내 보았다.

- Window Properties:

screen.width, screen.height

스크린 영역의 픽셀(pixels) 단위 너비와 높이(읽기 전용). 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다.

innerHeight, innerWidth

브라우저 창 속 문서가 표시되는 영역의 픽셀 단위 너비와 높이(읽기 전용). 여기에는 메뉴 막대, 도구 막대, 스크롤 바 등이 포함되지 않으나, 예외적으로 Firefox와 Opera에서는 스크롤 바의 영역이 포함된 값을 돌려준다. 이 속성은 IE에서는 지원되지 않고, 버전과 Doctype 선언에 의한 표준 호환 모드냐 아니냐에 따라 document.documentElement 혹은 document.body에 있는 clientWidth와 clientHeight 값을 사용해야 한다.

outerHeight, outerWidth

브라우저 창 전체의 픽셀 단위 너비와 높이(읽기 전용). 여기에는 메뉴 막대, 도구 막대, 스크롤 바 등이 포함된 값이다. IE에서는 해당 값이 존재하지 않고, 대신 MS 전용 속성인 document.documentElement 혹은 document.body의 offsetHeight, offsetWidth를 써야 한다.

pageXOffset, pageYOffset, scrollX, scrollY

문서가 얼마 만큼 스크롤 되었는지를 알려주는 픽셀 단위의 값(읽기 전용). 이것도 역시나 Internet Explorer는 지원하지 않는다. 대신 document.documentElement 혹은 document.body의 비표준 scrollLeft와 scrollTop을 사용.

- Window and Mouse Event Properties:

screenLeft, screenTop, screenX, screenY

스크린 속 창의 왼쪽 위 구석에 있는 모서리의 위치를 나타내는 좌표 값(읽기 전용). IE, Safari, 그리고 Opera는 screenLeft와 screenTop을 지원하지만, Firefox와 Safari는 screenX와 screenY를 지원한다.

- HTML Element Properties:

offsetHeight, offsetWidth

한 객체의 픽셀 단위의 너비와 높이 값으로, margin을 제외한 스크롤 바와 padding, border 값을 포함하고 있다. 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다.

clientHeight, clientWidth

한 객체의 픽셀 단위의 너비와 높이 값으로 padding 값이 포함되나, 그 외의 스크롤 바와 border, margin 값은 포함되지 않는다. 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다.

offsetLeft, offsetTop

상위 offsetParent 객체를 기준으로 해서 한 객체의 왼쪽 위 모서리의 X, Y 좌표 값. 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다.

offsetParent

어떤 특정 객체를 포함하고 있는 상위 객체로서 하위 객체의 offsetLeft 그리고 offsetTop의 기준 좌표 시스템 역할을 한다. 대부분의 경우, offsetParent는 하위 객체를 포함하고 있는 Document object가 되지만, 유동적으로 위치하는(absolute-positioned) 요소의 경우에는 또 이 요소를 포함하고 있는 유동적으로 위치한 상위 요소가 바로 offsetParent가 된다. 복잡한 것은 브라우저들 마다 offsetParent가 되는 요소를 다르게 가르켜서 주의가 요구된다. (예를 들어, Firefox에서는 root node를 가리키지만, Opera에서는 바로 위의 부모 요소를 가리킨다.) 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다.

scrollHeight, scrollWidth

한 객체의 픽셀 단위의 전체 너비와 높이 값. 이 객체가 스크롤바를 가지고 있을 경우(overflow: auto), 이 값은 객체의 보여지는 부분만의 크기를 나타내는 offsetHeight과 offsetWidth 값과는 다르게 된다. 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다. 하지만, 스크롤 바를 표시하는 구현 방법이 브라우저들 사이에 차이를 보이는 이유로 저 마다 돌려주는 값도 달라서, Firefox와 IE는 객체의 padding까지 포함한 값을 나타내나 Safari의 경우에는 content의 크기에다 한쪽 padding 값만을 더해서 돌려주며 Opera의 경우에도 content 크기에다 한쪽 padding 값과 함께 한쪽 border 값까지 포함하는 등 브라우저들 마다 심한 편차를 보여주고 있어서 사용에 신중을 기해야 한다.

scrollLeft, scrollTop

객체가 스크롤바를 가지고 있을 경우, 객체가 얼마 만큼 스크롤 되었는지 왼쪽 위 모서리를 기준으로 한 픽셀 단위의 값. 이 속성은 브라우저에 따라 문서의 <body> 혹은 <html> 태그에도 정의되어 있어서, 문서 전체가 얼마나 스크롤 되었는지를 나타낸다. 주의할 것은, <iframe> 태그에서 스크롤 된 값은 무시된다. 웹 표준 규약은 아니지만 여러 브라우저들에서 지원하고 있다.

자, 그럼 위의 내용을 그림으로 정리하면,

HTML elements coordinates

결론적으로, 각 속성들에 대한 브라우저들 끼리의 합의가 이루어지지 않는 한 합리적이고 공통된 값을 얻기란 상당히 골치아파서 커다란 걸림돌로 작용한다. 그나마 UI 관련 JavaScript 라이브러리들이 존재하니 시름을 덜 수 있다. 이렇게 놓고 보니, 정리하려고 해도 현재로선 명확한 정리 자체가 될 수가 없다. :?

2007/12/13 17:18 2007/12/13 17:18
이 글에는 트랙백을 보낼 수 없습니다

JavaScript OOP, Prototype)

1. 객체에 속성이용

man.name="홍길동";

Man["name"] = "홍길동";




2. 함수 추가

1) 익명의 함수 이용

(함수의 이름이 없고 몸체만있는 함수) 

Man.getName = fuction(){

       return this.name;

}






2) 객체 외부 함수 이용

function printName()

{

       alert(this.name);

}

Man.getName = printName; // 괄호를 사용하지 않음




3. 객체 생성


1) new Object(); 방식

 new Object();

 var man = new Object();

 man.name = "홍길동";



2) 생성자이용

function ManObject(name, height){

       this.name = name;

       this.height = height;

}

Var man = new ManObject("홍길동", 170);

Alert(man.name + " / " + man.height);


3) 생성자를 이용한 방식에서 클래스에 메소드 추가

function ManObject(name, height){

 this.name = name;

 this.height = height;


this.getName = function(){

       return this.name

} // 생성자에 직접 함수 정의

}


Prototype 속성은 모든 자바스크립트 객체의 기본속성이다.

--어떤 객체의 prototype에 속성이나 함수를 정의 한다는 것은 앞으로 그 객체에 공통적으로 적용되는 속성이나 함수를 정의한다는 의미





4.Prototype 를 이용

function ManObject(name, height){

       this.name = name;

       this.height = height;      

} // 생성자를 만들고 함수는 생성자 안에 지정하지 않음


ManObject.prototype.getName = function(){

       return this.name;

} // prototype 속성에 새로운 함수를 붙임



생성자에 함수 정의

인스턴스를 여러 개 만들때 인스턴스는 메모리로 상주. 인스턴스마다 함수와 같이 생김

Prototype을 이용

함수가 단한번 만들어지고 모든 인스턴스는 이 프로로타입 함수를 공유한다.


객체안에 내장된 함수가 객체의 지역변수를 자신의 지역변수처럼 사용할 경우 이러한 함수를 클로저라 한다.





5.클로저

1-1) 클로저 발생 하는 경우

function MyObject(){

       var startTime = new Date();

       this.elapsedTime = function(){

              var now = new Date();

              var elapsed = now - startTime;

              return elapsed;

       }

}      // 클로저 : startTime 이 함수 안에 없고, 클래스 변수         //startTime을 참조함

       //클로저발생 => 함수 안에서 사용하는 외부의 지역변수는

       //깨긋이 지워지지 않고 함수에 묶여있어 메모리 누수현상발생.

 





1-2) 참조할수 있는 startTime이 없어 오류발생 하는 경우

function MyObject(){

       var startTime = new Date();

       this.elapsedTime = getElapsed;

}

function getElapsed(){

     var now = new Date();

     var elapsed = now + startTime();        return elapsed;

}




1-3) 클로저 발생안되게 사용하는 방법

function MyObject(){

       this.startTime = new Date();

}

MyObject.prototype.elapsedTime = function(){

      var now = new Date();

      var elapsed = now + this.startTime;     

      return elapsed;

}







6.Prototype 의 성질


1) Prototype 속성 변경 

그 이전에 만들 객체의 속성은 자동으로 변경

 프로토 타입 영역의 속성은 모든 인스턴스간에 공유

function MyObject(){ }


MyObject.prototype.color = "blue";

var obj1 = new MyObject();

alert(obj1.color); // blue

MyObject.prototype.color = "red";

car obj2 = new MyObject();

alert(obj1.color + " / " + obj2.color); // red / red





2) Prototype를 이용한 내장객체 확장


Object.prototype.log = function(){

document.write("this:" + this);

//최상위 객체인 Object의 프로토타입에 log함수 추가 => 모든 자바스크립트 객체, 변수에 대해서 log메소드 사용가능

}

var arr = new Array(0,1,2);

arr.log(); // this : 0, 1, 2

var name = "mike";

name.log(); // this : mike

var sum = 1 + 3;

sum.log();       //this : 4







7. 자바스크립트 객체의 상속

1-1) 상속 - prototype 을 이용한 부모 클래스 지정방법 (부모클래스 생성자 매개변수 없는경우)

function ManObject(){ }


       ManObject.prototype.eyeCnt = 2;

       ManObject.prototype.getEyeCnt = function(){

              return this.eyeCnt;

}

function AsianMan(){

       this.eyeColor = "black";

}

AsianMan.prototype = new ManObject();//AsianMan 의 부모클래스는 ManObject



function WesternMan(){

       this.eyeColor = "blue";

}

WesternMan.prototype = new ManObject();//WesternMan 의 부모클래스는 ManObject



var HongGilDong = new AsianMan();

var smith = new WesternMan();


alert(HongGilDong.eyeCnt); // 2

alert(HongGilDong.eyeColor); // black

alert(HongGilDong.getEyeCnt()); // 2

alert(smith.eyeCnt); //2

alert(smith.eyeColor); // blue

alert(smith.getEyeCnt()); // 2








1-2) 상속 - prototype 을 이용한 부모 클래스 지정방법 (부모클래스 생성자 매개변수 있는경우)

/**

 * 사람 클래스

 * @param {String} name

 * @param {String} age

 */

function Person(name){

       this.name = name;


       this.getName = function(){

              return this.name;

       }

}


var gradeEnum = {

       one        : 1 ,

       two        : 2,

       tree       : 3

}


function Student(name, schoolName){      

       this.schoolName = schoolName;      

       this.getSchoolName = function (){

              return this.schoolName;

       }      

             

       this.grade;

       this.getGrade = function(){

              return this.grade;

       }      

}

Student.prototype = new Person("홍길동"); //순서가 중요.제일 먼저Student.prototype을 지정해야함.


/**

 * prototype을 이용한 setGrade 메소드 확장

 * @param {gradeEnum} grade

 */

Student.prototype.setGrade = function (grade){

       this.grade = grade;

}


var student = new Student("홍길동" ,  "홍길동대학교");

alert(student.getName());                    //홍길동

alert(student.getSchoolName());              //홍길동대학교

student.setGrade(gradeEnum.tree);      

alert(student.getGrade());                   //3








2-1) 상속 - base 속성,메소드를 이용한 방법(부모클래스 생성자 매개변수 없는경우)

function ManObject(){

       this.eyeCnt = 2;

       this.getEyeCnt = function(){

              return this.eyeCnt;

       }

}



// AsianMan 의 부모클래스는 ManObject;

function AsianMan(){

       this.base = ManObject;

       this.base();

       this.eyeColor = "black";

}





 2-2) 상속 - base 속성,메소드를 이용한 방법(부모클래스 생성자 매개변수 있는경우)

/**

 * 사람 클래스

 * @param {String} name

 * @param {String} age

 */

function Person(name){

       this.name = name;


       this.getName = function(){

              return this.name;

       }

}


var gradeEnum = {

       one        : 1 ,

       two        : 2,

       tree       : 3

}

function Student(name, schoolName){      

       this.base = Person;             //부모클래스 지정

       this.base(name);                //부모클래스 생성자호출


       this.schoolName = schoolName;      

       this.getSchoolName = function (){

              return this.schoolName;

       }      

             

       this.grade;

       this.getGrade = function(){

              return this.grade;

       }      

}

 

/**

 * prototype을 이용한 setGrade 메소드 확장

 * @param {gradeEnum} grade

 */

Student.prototype.setGrade = function (grade){

       this.grade = grade;

}



var student = new Student("홍길동" ,  "홍길동대학교");

alert(student.getName());                    //홍길동

alert(student.getSchoolName());              //홍길동대학교

student.setGrade(gradeEnum.tree);      

alert(student.getGrade());                   //3

2007/12/04 13:25 2007/12/04 13:25
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)