액션 스크립트

ActionScript
액션 스크립트
ActionScript icon.png
패러다임멀티패러다임: 객체 지향(프로토타입 기반), 기능, 필수, 스크립트
설계자게리 그로스먼
개발자Macromedia(현재는 Adobe Systems에 통합됨)
처음 등장한1998
안정된 릴리스
3.0 / 2006년6월 27일 (2006-06-27)
타이핑 분야강력, 정적
웹 사이트adobe.com/devnet/actionscript/
주요 구현
Adobe Flash Player, Adobe AIR, Apache Flex, Scaleform GFx
영향을 받다
자바스크립트, 자바
영향받은
Haxe
액션 스크립트
파일 이름 확장자
.~하듯이
인터넷 미디어 유형
응용 프로그램 / 에코스크립트[1]

ActionScript는 원래 Macromedia Inc.(나중에 Adobe Systems에 인수됨)에서 개발한 객체 지향 프로그래밍 언어입니다.하이퍼카드의 [2]스크립트 언어인 HyperTalk의 영향을 받습니다.현재는 ECMAScript(JavaScript로 널리 알려진 언어의 구문과 시멘틱스의 상위 세트라는 의미)의 구현이지만, 원래는 형제로서 생겨났으며, 둘 다 HyperTalk의 영향을 받았다.ActionScript 코드는 보통 컴파일러에 의해 바이트 코드 형식으로 변환됩니다.

ActionScript는 주로 Adobe Flash Player 플랫폼을 대상으로 하는 웹 사이트 및 소프트웨어 개발에 사용되며 웹 페이지에서 내장된 SWF 파일 형식으로 사용됩니다.

ActionScript 3은 데스크톱 및 모바일 애플리케이션 개발에도 Adobe AIR 시스템과 함께 사용됩니다.이 언어 자체는 그 사양이 무료로[3] 제공되고 오픈 소스 컴파일러(Apache Flex의 일부)와 오픈 소스 가상 머신(Mozilla Tamarin)을 모두 사용할 수 있다는 점에서 오픈 소스입니다.

ActionScript는 또한 3D 비디오 게임 사용자 인터페이스와 HUD 개발을 위해 Scaleform GFx와 함께 사용되었습니다.

개요

ActionScript는 처음에 Adobe Flash(이전의 Macromedia Flash)로 만들어진 간단한 2D 벡터 애니메이션을 제어하기 위해 설계되었습니다.초기 버전의 플래시 콘텐츠는 애니메이션에 초점을 맞췄지만 대화 기능을 거의 제공하지 못했기 때문에 스크립팅 기능이 매우 제한적이었습니다.이후 버전에서는 스트리밍 미디어(비디오 및 오디오 등)를 사용하여 웹 기반 게임과 풍부한 웹 애플리케이션을 만들 수 있는 기능이 추가되었습니다.오늘날 ActionScript는 Adobe AIR를 통한 데스크톱 및 모바일 개발에 적합하며, 일부 데이터베이스 애플리케이션 및 Make Controller Kit와 같은 기본 로봇 공학에서 사용됩니다.

Flash MX 2004는 플래시 애플리케이션 개발에 보다 적합한 스크립트 언어인 ActionScript 2.0을 도입했습니다.애니메이션이 아닌 스크립트 작성으로 시간을 절약할 수 있는 경우가 많기 때문에 편집 시 유연성이 높아집니다.

Flash Player 9 alpha(2006년)가 출시된 이후 새로운 버전의 ActionScript 3.0이 출시되었습니다.이 버전의 언어는 처음부터 완전히 다시 작성된 버전의 ActionScript Virtual Machine에서 컴파일되어 실행됩니다(더빙된 AVM2).[4]따라서 ActionScript 3.0에서 기술된 코드는 일반적으로 Flash Player 9 이상을 대상으로 하며 이전 버전에서는 작동하지 않습니다.동시에 Just-In-Time 컴파일러가 [5]확장되었기 때문에 ActionScript 3.0은 기존 ActionScript 코드보다 최대 10배 빠르게 실행됩니다.

플래시 라이브러리는 브라우저의 XML 기능과 함께 사용하여 브라우저의 리치 콘텐츠를 렌더링할 수 있습니다.이 기술은 AJAX와 마찬가지로 Asynchronous Flash 및 XML로 알려져 있습니다.Adobe는 동작과 프로그래밍을 ActionScript로 수행하며 플래시 런타임에 구축된 리치 웹 애플리케이션에 대한 수요를 충족시키기 위해 Flex 제품군을 제공합니다.ActionScript 3.0은 Flex 2 API의 기반이 됩니다.

역사

ActionScript는 Macromedia의 Flash 오서링 툴을 위한 객체 지향 프로그래밍 언어로 시작되었으며, 나중에 Adobe Systems에 의해 Adobe Flash로 개발되었습니다.플래시 오서링 툴의 처음 3가지 버전에서는 제한된 인터랙티브 기능이 제공되었습니다.초기 플래시 개발자들은 버튼이나 프레임에 "액션"이라고 불리는 간단한 명령을 첨부할 수 있었습니다.액션 세트는 기본적인 네비게이션 컨트롤로 "재생", "정지", "getURL" 및 "gotoAndPlay"와 같은 명령어를 사용합니다.

1999년 Flash 4가 출시되면서 이 간단한 일련의 작업이 작은 스크립트 언어가 되었습니다.Flash 4에 도입된 새로운 기능에는 변수, , 연산자(if 문) 루프가 포함됩니다.내부적으로는 "ActionScript"라고 불리지만 Flash 4 사용자 매뉴얼 및 마케팅 문서에서는 이 명령어 세트를 설명하기 위해 "Actions"라는 용어를 계속 사용했습니다.

플레이어 버전별 타임라인

  • Flash Player 2: 스크립팅이 지원되는 첫 번째 버전.액션에는 타임라인 제어를 위한 gotoAndPlay, gotoAndStop, nextFrame 및 nextScene이 포함되어 있습니다.
  • Flash Player 3: 외부 SWF(load Movie)를 로드할 수 있는 확장 기본 스크립트 지원.
  • Flash Player 4: 완전한 스크립팅을 구현한 최초의 플레이어(액션이라고 불립니다).이 스크립트는 플래시 기반의 구문이며 루프, 조건, 변수 및 기타 기본 언어 구조를 지원합니다.
  • Flash Player 5: Action Script의 첫 번째 버전이 포함되어 있습니다.ECMAScript [6]기반의 프로토타입 기반 프로그래밍을 사용하여 완전한 절차 프로그래밍 및 객체 지향 프로그래밍을 가능하게 했습니다.설계 기반 개발.
  • Flash Player 6: 이벤트 처리 모델, 접근성 제어 및 스위치 지원이 추가되었습니다. 디맨드 오디오/비디오 스트리밍이 가능한 AMF 및 RTMP 프로토콜을 지원하는 첫 번째 버전입니다.
  • Flash Player 7: 텍스트에 대한 CSS 스타일링과 클래스 기반 상속이 포함된 ECMAScript 4 Netscape[7] Proposal 기반의 프로그래밍 언어인 ActionScript 2.0 지원이 추가되었습니다.단, ActionScript 2.0은 Flash Player 6에서 실행할 수 있도록 ActionScript 1.0 바이트 코드로 교차 컴파일할 수 있습니다.
  • Flash Player 8: 실행 시 비트맵 데이터를 제어하는 API, 파일 업로드 및 흐림 및 드롭섀도 라이브 필터를 갖춘 새로운 클래스 라이브러리를 추가하여 ActionScript 1/ActionScript 2를 더욱 확장했습니다.
  • Flash Player 9(처음에는 8.5) : 레거시 콘텐츠를 지원하기 위해 필요한 이전 AVM1과 공존하고 있는 ActionScript Virtual Machine 2(AVM2)라는 새로운 가상 머신이 등장함에 따라 ActionScript 3.0이 추가되었습니다.성능 향상은 새로운 JIT 컴파일러를 포함한 플레이어의 이번 릴리스에서 주요 목표였습니다.이진 소켓, E4X XML 구문 분석, 전체 화면 모드 및 정규 표현에 대한 지원이 추가되었습니다.이것은 Adobe Flash Player라는 [8]제목의 플레이어의 첫 번째 릴리스입니다.
  • Flash Player 10(원래 Astro):X, Y, Z축에서의 회전, 3D 그리기 API, 텍스처 매핑 등 기본적인 3D 조작이 추가되었습니다.Adobe Pixel Bender를 사용하여 사용자 정의 필터를 생성하는 기능.몇 가지 비주얼 처리 태스크가 GPU로 오프로드되어 각 프레임의 렌더링 시간이 현저하게 단축되어 특히 H.264 비디오의 경우 프레임 레이트가 높아집니다.플래시로 오디오를 커스텀 제작할 수 있는 새로운 사운드 API가 등장했습니다.[9]이것은 지금까지 불가능했던 것입니다.또한 Flash Player 10은 Real Time Media Flow Protocol(RTMFP)의 Peer to Peer(P2P) 통신을 지원합니다.
  • Flash Player 11: 이 버전의 주요 추가 사항은 Windows Desktop, Mac Desktop, iOS, Android 및 기타 주요 플랫폼을 위한 Stage 3D 기반 고급(그래픽 카드 가속) 3D 기능입니다.iOS 플랫폼 및 기타 데스크톱 이외의 플랫폼에 대한 상당한 호환성 향상이 추가되었습니다.기타 기능으로는 카메라용 H.264 인코딩, 네이티브 JSON 지원, 큐빅 베지어 커브, 안전한 난수 생성기, SWF 파일용 LZMA 압축, 다른 프로세서 스레드에 코드 실행을 오프로드하는 워커, 그래픽 카드 가속 카메라 피드 렌더링, 메모리 내장 및 성능 분석, ActionScript 컴파일러 등이 있습니다.2.0 및 기타 사소한 [10]추가 사항도 있습니다.
  • Flash Player 11.2: 2012년 3월에 출시되었으며, 게임 및 비디오 시장의 핵심 기능을 추가하는 데 초점을 맞췄습니다.이 릴리스에는 다음과 같은 기능이 포함되어 있습니다.마우스 잠금 지원.마우스 오른쪽 버튼 및 마우스 가운데 버튼 클릭 지원.컨텍스트 메뉴를 디세블로 합니다.Adobe AIR를 통한 Apple iOS 및 Android용 하드웨어 고속 그래픽스/Stage 3D 지원.하드웨어 액셀러레이션 콘텐츠의 가용성을 확대하기 위해 하드웨어 액셀러레이션 비디오 카드 추가 지원(2008년 1월부터)New Throttle 이벤트 API(Flash Player가 콘텐츠를 조절, 일시 중지 또는 재개할 때 이벤트를 디스패치합니다).PC의 멀티스레드 비디오 디코딩 파이프라인으로 모든 데스크톱 플랫폼에서 비디오의 전체적인 성능을 향상시킵니다.디버깅 플레이어의 프리미엄 기능 사용 알림.릴리스 플레이어에서는 콘텐츠는 무제한으로 실행됩니다.
  • Flash Player 11.3: 2012년 6월에 출시되었으며, 게임 시장을 위한 기능 키 활성화와 개발자들의 일반적인 기능 요청에 대처하는 데 초점을 맞췄습니다.이 릴리스에는 다음과 같은 기능이 포함되어 있습니다.풀스크린 모드에서의 키보드 입력 지원.저레이텐시 오디오 작업에 대한 오디오 지원 향상.Stage 3D 콘텐츠의 텍스처를 단계적으로 스트리밍할 수 있습니다.Firefox의 Flash Player 보호 모드입니다.프레임 라벨이벤트비트맵 데이터를 JPEG 및 PNG 형식으로 압축할 수 있습니다.Mac OS X App Store 응용 프로그램 샌드박스 요구 사항 지원.Stage 3D 텍스트 스트리밍 지원GPU 드라이버 세부 정보에 대한 확장 정보.품질 API를 사용한 비트맵 그리기(신규).외부 마우스 이벤트 API를 릴리스합니다.Mac OS용 Flash Player 사일런트업데이트 지원Android 4.0 디바이스(Adobe AIR)에 대한 스타일러스 지원.iOS용 USB 디버깅(Adobe AIR). iOS 시뮬레이터 지원(Adobe AIR).
  • Flash Player 11.4: 2012년 8월에 출시되었으며, 게임 시장의 핵심인 기능을 활성화하고 개발자들의 일반적인 기능 요청에 대처하는 데 초점을 맞췄습니다.이 릴리스에는 다음과 같은 기능이 포함되어 있습니다.ActionScript 워커(개별 스레드에서 ActionScript 동시 실행 가능).고급 프로파일링 지원ByteArray에 대한 LZMA 압축 지원.Stage 3D용 하드웨어 액셀러레이션 비디오 카드의 지원은 2006년까지 확대되었습니다.Apple iOS를 대상으로 한 ActionScript 성능 향상.현재 환경의 성능 기능에 대한 정보를 제공하는 성능 인덱스 API입니다.Alpha 지원으로 압축 텍스처 지원.StageVideo.attachCamera API 지원iOS(Adobe AIR) 푸시 알림 지원.
  • Flash Player 11.5: 2012년 11월에 출시되었으며 성능 향상 및 안정성에 중점을 두고 있습니다.이 릴리스에는 다음과 같은 기능이 포함되어 있습니다.ActionScript 워커를 위한 공유 ByteArray 지원.Flash Player 릴리즈 빌드의 디버깅스택 트레이스다양한 버그 수정
  • Flash Player 11.6: 2013년 3월에 출시되었으며 성능 향상, 보안 향상 및 안정성에 중점을 두고 있습니다.이 릴리스에는 다음과 같은 기능이 있습니다.실행 시 그래픽 벡터 데이터를 쿼리하는 기능.전체 화면 권한 대화상자 사용자 인터페이스 개선.iOS에서 AIR 애플리케이션으로 AOT 모드로 전개할 때 실행 시 SWF를 로드할 수 있습니다.AIR 애플리케이션으로 도입할 때 iOS 디바이스에서 지원되는 디스플레이 해상도를 보다 세밀하게 제어할 수 있습니다.Flash Professional을 위한 HiDPI 지원ActionScript 3에 의한 고속 메모리 조작/인트라이닉스 액세스
  • Flash Player 11.7: 코드명 "Geary"로 2013년 6월에 출시.이 릴리스는 프리미엄 비디오, 게임, 보안 및 안정성에 초점을 맞춥니다.이 릴리스에서는 다음과 같은 기능이 예정되어 있습니다.Android 캡티브 런타임 디버깅OUYA 컨트롤러 지원iOS에서 SWF 파일을 원격 호스팅합니다.iOS에서 공유 개체의 백업을 방지하여 iCloud 지원을 향상시킵니다.
  • Flash Player 11.8(코드명 Harrison):Adobe는 코드명 "Harrison"인 이 버전을 2013년 하반기에 출시할 계획이었다.이번 릴리즈에서는 프리미엄 비디오, 게임, 보안 및 안정성에 초점을 맞췄습니다.이 릴리스에는 다음과 같은 기능이 포함되어 있습니다.MovieClips의 재귀 중지 API입니다.데스크톱 브라우저 및 Android에서 GamePad 지원

ActionScript 버전별 타임라인

2000 ~ 2004 : ActionScript "1.0"

2000년 9월에 Flash 5가 출시되면서 Flash 4의 "액션"이 다시 한 번 강화되었고 처음으로 "[11]ActionScript"라는 이름이 지정되었습니다.이는 JavaScript와 ECMA-262(Third Edition) 표준에 영향을 받은 ActionScript의 첫 번째 버전이며, 해당 표준의 객체 모델과 많은 핵심 데이터 유형을 지원합니다.로컬 변수는 var 문을 사용하여 선언할 수 있으며 매개 변수 전달 및 반환 값을 가진 사용자 정의 함수를 만들 수도 있습니다.특히 ActionScript는 드롭다운 목록과 대화 상자 컨트롤에서 액션을 선택하여 조립하는 것이 아니라 텍스트 편집기를 사용하여 입력할 수도 있습니다.저작 툴인 Flash MX와 해당 플레이어인 Flash Player 6의 다음 릴리스에서도 언어는 기본적으로 변경되지 않았습니다. 스위치 설명서와 "이퀄리티"(===) 연산자가 추가되어 ECMA-262 호환에 가까워지는 등 사소한 변경만 있었습니다.ActionScript의 두 가지 중요한 특징은 느슨한 유형 시스템과 프로토타입 기반 상속 의존입니다.느슨한 타이핑은 모든 유형의 데이터를 저장할 수 있는 변수의 능력을 의미합니다.이를 통해 신속한 스크립트 개발이 가능하며 특히 소규모 스크립트 프로젝트에 적합합니다.프로토타입 기반 상속은 코드 재사용 및 객체 지향 프로그래밍을 위한 ActionScript 1.0 메커니즘입니다.클래스의 공통 특성을 정의하는 클래스 키워드 대신 ActionScript 1.0은 개체 클래스의 "프로토타입"으로 사용되는 특수 개체를 사용합니다.클래스의 모든 공통 특성은 클래스의 프로토타입 개체에 정의되며 해당 클래스의 모든 인스턴스는 해당 프로토타입 개체에 대한 링크를 포함합니다.

2003 ~ 2006 : ActionScript 2.0

언어의 다음 주요 리비전인 ActionScript 2.0은 2003년 9월에 Flash MX 2004와 이에 대응하는 플레이어인 Flash Player 7의 출시와 함께 소개되었습니다.보다 크고 복잡한 애플리케이션에 적합한 언어에 대한 사용자의 요구에 부응하기 위해 ActionScript 2.0은 컴파일 시간 유형 체크와 키워드 클래스확장 등의 클래스 기반 구문을 갖추고 있습니다.(이를 통해 보다 구조화된 객체 지향 프로그래밍 접근법이 가능하지만 코드는 여전히 ActionScript 1.0 바이트 코드로 컴파일되므로 이전 Flash Player 6에서도 사용할 수 있습니다.즉, 클래스 기반 상속 구문은 기존 프로토타입 기반 시스템 위에 있는 계층이었습니다.)ActionScript 2.0을 사용하면 개발자는 타입 주석을 추가하여 변수를 특정 타입으로 제한할 수 있으므로 타입 불일치 오류를 컴파일 시에 발견할 수 있습니다.ActionScript 2.0은 또한 클래스 기반 상속 구문을 도입하여 개발자들이 Java 및 C++와 같은 클래스 기반 언어에서와 같이 클래스 및 인터페이스를 만들 수 있도록 했습니다.이 버전은 ECMAScript 제4판 드래프트 사양에 부분적으로 준거하고 있습니다.

2006 ~ 2020 : ActionScript 3.0

2006년 6월에 ActionScript 3.0은 Adobe Flex 2.0과 대응하는 플레이어인 Flash Player 9로 첫 선을 보였습니다.ActionScript 3.0은 언어를 근본적으로 재구성한 것이기 때문에 완전히 다른 가상 머신을 사용합니다.Flash Player 9에는 ActionScript 1.0 및 2.0으로 작성된 코드용 AVM1과 ActionScript 3.0으로 작성된 콘텐츠용 AVM2라는 두 개의 가상 머신이 포함되어 있습니다.ActionScript 3.0에서는 하드웨어 액셀러레이션(DirectX, OpenGL) 지원이 제한되었습니다.

언어 업데이트에서는 다음과 같은 몇 가지 새로운 기능이 도입되었습니다.

  • 컴파일 타임 및 런타임유형 체크: 컴파일 타임과 런타임 양쪽에 타입 정보가 존재합니다.
  • 프로토타입 기반 상속 시스템과는 별도로 클래스 기반 상속 시스템에서 성능이 향상되었습니다.
  • 패키지, 네임스페이스정규 표현식 지원.
  • ActionScript 1.0 및 2.0 바이트 코드와 호환되지 않는 완전히 새로운 유형의 바이트 코드로 컴파일합니다.
  • Flash Player API를 패키지로 정리한 개정판.
  • DOM 이벤트 처리 표준에 근거한 통합 이벤트 처리 시스템.
  • XML 처리를 위한 ECMAScript for XML(E4X) 통합
  • 플래시 런타임 표시 목록에 직접 액세스하여 런타임에 표시되는 내용을 완벽하게 제어합니다.
  • ECMAScript 제4판 초안 사양의 완전 준거 실장.
  • 동적 3D 객체 지원 제한(X, Y, Z 회전 및 텍스처 매핑)

플래시 라이트

  • Flash Lite 1.0: Flash Lite는 휴대 전화 및 가전 기기용으로 특별히 개발된 플래시 기술입니다.Flash 4 Action Script를 지원합니다.
  • Flash Lite 1.1: Flash 4 ActionScript 지원 및 디바이스 API 추가.
  • Flash Lite 2.0 및 2.1: Flash 7 ActionScript 2.0 및 fscommand2 API 지원이 추가되었습니다.
  • Flash Lite 3: Flash 8 ActionScript 2.0 및 FLV 비디오 재생 지원이 추가되었습니다.
  • Flash Lite 4: 브라우저 플러그인으로 Flash 10 ActionScript 3.0 지원 및 하드웨어 그래픽 액셀러레이션 지원 추가.

항공사

Adobe AIR는 Adobe가 개발한 Stage3D 엔진과 같은 일부 확장 콘텐츠 외에 ActionScript를 지원합니다.ActionScript 3.0에서 사용할 수 있는 API(Application Programming Interfaces)의 수도 크게 증가했습니다.

구문

ActionScript 코드는 자유 형식이므로 작성자가 원하는 양 또는 스타일을 사용하여 작성할 수 있습니다.기본 구문은 ECMAScript에서 파생되었습니다.

액션 스크립트 2.0

모든 호환 플레이어에서 작동하는 다음 코드는 깊이 0, 화면의 위치(0, 0)에 100픽셀의 너비 및 높이로 텍스트 필드를 생성합니다.그 다음에text파라미터는 "Hello, world" 문자열로 설정되며 플레이어에 자동으로 표시됩니다.

createTextField(텍스트 필드)("실패", 0, 0, 0, 100, 100); 환영하다.본문 = "안녕, 세상아"; 

외부 ActionScript 2.0 클래스 파일을 쓸 때 위의 예를 다음과 같이 Greeter.as라는 파일에 쓸 수 있습니다.

학급 com..인사말 확장 무비클립 {     일반의 기능. 인사말()     {         변화하다 txtHello: 텍스트 필드 = 이것..createTextField(텍스트 필드)("txtHello", 0, 0, 0, 100, 100);         txtHello.본문 = "안녕, 세상아";     } } 

액션 스크립트 3.0

ActionScript 3.0은 ActionScript 2.0과 구문은 비슷하지만 오브젝트를 작성하기 위한 API 세트는 다릅니다.다음 스크립트를 이전 버전의 ActionScript 2.0과 비교합니다.

변화하다 txtHello: 텍스트 필드 = 신규 텍스트 필드(); txtHello.본문 = '헬로 월드'; 이것..add Child(자녀 추가)(txtHello); 

최소 ActionScript 3.0 프로그램은 프로그래밍 언어와 플래시 IDE가 분리되기 때문에 다소 크고 복잡할 수 있습니다.

다음 파일이 Greeter.as이라고 가정합니다.

패키지 com.discloss.com.discloss의 {     수입품 flash.text.텍스트 필드;     수입품 flash.display 를 표시합니다.사이다;      일반의 학급 인사말 확장 사이다     {         일반의 기능.인사말()         {             변화하다 txtHello: 텍스트 필드 = 신규 텍스트 필드();             txtHello.본문 = '헬로 월드';             addParent3(txtHello);         }     } } 

Apache의 Flex 프레임워크를 사용할 경우 MXML 파일에서도 ActionScript 2를 사용할 수 있습니다.

<?xml version="2.0" encoding="utf+8"?> <s: 응용 프로그램          xmlns: fx="http://ns.adobe.com/mxml/2009"       xmlns:s="ns.adobe.com/flex/mx/polysylabi"       xmlns: 삭제="ns.adobe.com/flex/mx"          레이아웃="실패"          Creation Complete="init App()">      <fx: 스크립트>         <![CDATA]             일반의 기능.initApp(): 무효 {                // "Hello, world!" 메시지를 제목으로 출력합니다.                직함.본문 = "안녕, 월드!";             }         ]>     </fx: 스크립트>      <s: 라벨 id="실패" 폰트 사이즈="54" fontStyle"대담한" /> </s: 어플리케이션> 

데이터 구조

데이터형

ActionScript는 주로 다른 데이터 유형을 만드는 데 사용되는 "기본" 또는 "단순" 데이터 유형으로 구성됩니다.이러한 데이터 유형은 Java 데이터 유형과 매우 유사합니다.ActionScript 3은 ActionScript 2의 완전한 개서이기 때문에 데이터 유형과 상속이 변경되었습니다.

ActionScript 2 최상위 데이터 유형

  • 문자열 없음 + "Hello World"와 같은 문자 목록
  • 숫자 + 임의의 숫자 값
  • Boolean + "true" 또는 "false"만 사용할 수 있는 단순한 이진 스토리지입니다.
  • 개체 – 개체는 모든 복잡한 데이터 유형이 상속되는 데이터 유형입니다.메서드, 함수, 파라미터 및 기타 오브젝트를 그룹화할 수 있습니다.

ActionScript 2 복합 데이터 유형

"복잡한" 추가 데이터 유형이 있습니다.프로세서와 메모리 부하가 높고, 많은 「심플한」데이터 타입으로 구성되어 있습니다.AS2의 경우, 다음의 데이터 타입이 있습니다.

  • MovieClip + 표시 가능한 객체를 쉽게 사용할 수 있는 ActionScript 작성.
  • TextField + 단순 동적 또는 입력 텍스트 필드.Movieclip 유형을 상속합니다.
  • 버튼 + 4프레임(상태):업, 오버, 다운, 히트.MovieClip 유형을 상속합니다.
  • 날짜 + 특정 시점의 정보에 액세스할 수 있습니다.
  • 어레이 + 데이터를 선형으로 저장할 수 있습니다.
  • XML + XML 객체
  • XML 노드 + XML 노드
  • LoadVars + A Load Variables 객체는 HTTP POST 및 HTTP GET 변수를 저장하고 전송할 수 있습니다.
  • 소리
  • 넷스트림
  • NetConnection
  • 무비클립로더
  • 이벤트 리스트너

ActionScript 3 프리미티브(프라임) 데이터 타입[12]

  • Boolean: 부울 데이터 유형에는 true와 false 또는 1과 0의 두 가지 값만 사용할 수 있습니다.다른 모든 값은 유효합니다.
  • int + int 데이터 유형은 -2,147,483,648 ~2,147,483,647 범위의 32비트 정수입니다.
  • [Null] : Null 데이터 유형에는 Boolean이라는1개의 값만 포함됩니다.이것은 String 데이터 유형 및 개체 클래스를 포함하여 복잡한 데이터 유형을 정의하는 모든 클래스의 기본값입니다.
  • 숫자 + 숫자 데이터 유형은 정수, 부호 없는 정수 및 부동 소수점 숫자를 나타낼 수 있습니다.Number 데이터 유형은 IEEE Standard for Binary Floating Point Malculation(IEEE+754)에서 지정된 64비트 배 정밀도 형식을 사용합니다.- 9,007,199,254,740,992(-253) ~ 9,007,199,254,740,992 사이의53 값을 저장할 수 있습니다.
  • [String] : String 데이터형은 일련의 16비트 문자를 나타냅니다.문자열은 UTF-16 형식을 사용하여 내부적으로 Unicode 문자로 저장되지 않습니다.이전 버전의 플래시에서는 UTF-8 포맷이 사용되었습니다.
  • uint + uint(부호되지 않은 정수) 데이터 유형은 0 ~4,294,967,295 범위의 32비트 부호 없는 정수입니다.
  • void: 데이터 유형에는 정의되지 않은 값이 1개만 포함됩니다.이전 버전의 ActionScript에서는 Object 클래스의 인스턴스에 대해 defined가 기본값이었습니다.ActionScript 3.0에서는 오브젝트인스턴스의 기본값은 부울입니다.

ActionScript 3 일부 복잡한 데이터 유형[12]

  • 배열 + 데이터 목록을 포함합니다.ActionScript 3은 강력한 타입의 언어이지만, 어레이의 내용은 어떠한 타입이든 상관없습니다.검색 후 값은 원래 타입으로 되돌려야 합니다.(타입이 있는 어레이에 대한 지원은 최근 벡터 클래스에서 추가되었습니다.)
  • [Date] : 날짜/시간 디지털 표현을 포함하는 날짜 객체.
  • 오류 – 예외로 느려졌을 때 런타임 오류 보고를 허용하는 개체 없음 일반 오류입니다.
  • flash.display:비트맵 – 애니메이션이 아닌 비트맵 표시 객체입니다.
  • flash.display:MovieClip: 애니메이션 동영상 클립 표시 개체. 플래시 타임라인은 기본적으로 MovieClip입니다.
  • flash.display:Shape – 애니메이션이 아닌 벡터 모양 개체입니다.
  • flash.display:Simple Button – 임의의 히트 영역에서 "up", "over" 및 "down" 상태를 지원하는 단순한 인터랙티브 버튼 유형입니다.
  • flash.display:스프라이트 + 타임라인이 있는 디스플레이 객체 컨테이너.
  • flash.media:[Video] : 직접(프로그레시브 다운로드) 전송 또는 스트리밍(RTMP) 전송을 지원하는 비디오 재생 객체.Flash Player 버전9.0.15.0 에서는, H.264/MP4 하이 디피니션비디오 포맷도 표준 플래시 비디오(FLV) 컨텐츠와 함께 서포트되고 있습니다.
  • flash.text:[TextField] : 다이내믹한 인터랙티브텍스트 필드 객체
  • flash.flashs:ByteArray – 이진 바이트 데이터 배열을 포함합니다.
  • flash.flashs:사전 – 사전은 모든 데이터 유형의 키를 포함할 수 있는 개체의 변형입니다(오브젝트는 항상 키에 문자열을 사용합니다).
  • [Function] : 모든 플래시 메서드 정의의 핵심 클래스.
  • Object: Object 데이터 유형은 Object 클래스로 정의됩니다.Object 클래스는 ActionScript의 모든 클래스 정의에 대한 기본 클래스 역할을 합니다.기본 형식의 개체는 키와 값의 쌍을 포함하는 연관 배열로 사용할 수 있습니다. 여기서 키는 문자열이 아니며 값은 모든 유형일 수 있습니다.
  • RegExp: 문자열의 정규 표현 객체.
  • 벡터 – Flash Player 7 이상용으로 게시할 때 지원되는 어레이의 변형입니다.벡터는 고정 길이일 수 있으며 검색 중에 경계를 검사하는 고밀도 배열(값 정의 또는 부울 필요)입니다.벡터는 어레이보다 활자가 더 간편할 뿐만 아니라 성능도 더 빠릅니다.
  • XML – E4X(Standard ECMA-357)를 기반으로 한 수정 XML 객체.노드 및 속성은 ActionScript 2.0 개체와 다르게 액세스됩니다(XMLDocument라는 이름의 레거시 클래스는 이전 버전과의 호환성을 위해 제공됩니다).
  • XMLList – TXT 클래스에서 다양한 콘텐츠를 검색하기 위한 어레이 기반 객체입니다.

데이터 유형 사용

기본 구문은 다음과 같습니다.

변화하다 변수명: 변수유형 = 신규 변수유형(파라미터1, 파라미터2, ..., 파라미터); 

따라서 빈 개체를 만들려면 다음 작업을 수행합니다.

변화하다 myObject(myObject): 물건 = 신규 물건(); 

또는 비공식적인 방법으로:

변화하다 myObject(myObject) = {}; 

일부 유형은 자동으로 배치됩니다.

변화하다 myString: 스트링 = "안녕하세요 위키피디아!"; // 이렇게 하면 변수가 자동으로 문자열로 설정됩니다. 변화하다 마이넘버: 번호 = 5; // 이렇게 하면 숫자에 대해 동일한 작업이 수행됩니다. 변화하다 myObject(myObject): 물건 = { 파라미터1: "안녕!", 파라미터2: 76 }; // 이렇게 하면 두 개의 변수를 가진 개체가 생성됩니다. // param1은 "Hi!"의 데이터를 포함하는 문자열입니다. // 및 param2는 데이터가 76인 숫자입니다.  // 이것은 어레이를 자동으로 작성하기 위한 구문입니다. 변화하다 myArray: 어레이 = [5, "안녕하세요!", { a: 5, b: 7 }]; // 변수가 3개인 배열을 만듭니다. // 첫 번째(0)는 값이 5인 숫자입니다. // 두 번째 (1)은 "Hello!"의 값을 가진 문자열입니다. // 세 번째 (2)는 {a: 5, b: 7}을(를) 가진 개체입니다. 

일부 객체 지향 언어와 달리 ActionScript는 원시 유형과 참조 유형을 구분하지 않습니다.ActionScript에서는 모든 변수가 참조 유형입니다.그러나 Boolean, Number, int, uint 및 String을 포함하는 원시 데이터 유형에 속하는 개체는 변경되지 않습니다.[13]

따라서, 예를 들어 정수형 변수가 함수에 전달될 경우, 함수 내부에서 변수를 변경해도 원래 변수는 변경되지 않습니다. 함수 내부에서 새로운 int 객체가 생성되기 때문입니다.다른 (원시적이지 않은) 데이터 유형의 변수가 함수에 전달된 경우(예: XML) 함수 내에서 변수를 변경하면 새 XML 개체가 생성되지 않으므로 원래 변수도 변경됩니다.

일부 데이터 유형에는 리터럴을 사용하여 값을 할당할 수 있습니다.

변화하다 아이템1: 스트링 = 'ABC"; 변화하다 아이템2: 부울 = 진실의; 변화하다 항목 3: 번호 = 12; 변화하다 아이템4: 어레이 = ["a", "b", "c"]; 변화하다 항목 5: 물건 = { 이름.: "액션 스크립트", 버전: "3.0" }; 변화하다 항목 6: XML = < >노드><어린아이 /> //노드>; // 프리미티브 XML은 따옴표로 묶이지 않습니다. 

ActionScript 참조는 클래스의 인스턴스에 대한 포인터입니다.참조는 객체의 메모리 주소를 저장합니다. 참조에 대한 연산은 객체의 메모리 주소에 대한 참조 값을 따르고 해당 객체에 대한 연산을 수행합니다.ActionScript의 모든 개체는 직접 액세스하지 않고 참조를 통해 액세스됩니다.

변화하다 아이템1: XML = 신규 XML("<node><자 /><node>"); 변화하다 아이템2: XML = 아이템1; 아이템2.첫째 아이.특성.가치 = 13; // item2는 단순히 item1이 가리키는 것을 가리키기 때문에 item1은 item2와 같습니다. // 현재 둘 다: // <node> <자녀값="13" /> </node> 

삭제할 수 있는 것은 "delete" 키워드를 사용하여 오브젝트에 대한 참조뿐입니다.실제 객체 및 데이터의 삭제는 Flash Player 가비지 컬렉터에 의해 이루어집니다.이 가비지 컬렉터는 플래시 메모리 공간에 기존 참조를 체크합니다.찾을 수 없는 경우(고립된 개체에 대한 다른 참조는 이루어지지 않음) 메모리에서 제거됩니다.따라서 ActionScript에서 메모리를 관리하려면 세심한 응용 프로그램 개발 계획이 필요합니다.

변화하다 아이템1: XML = 신규 XML("<node><자 /><node>"); 삭제하다 아이템1; // 응용 프로그램의 다른 곳에 항목 1에 대한 참조가 없는 경우, // 가비지 컬렉터의 다음 경로에서 제거됩니다. 

코드 보호

대부분의 바이트 코드파일 형식과 마찬가지로 플래시 SWF 파일은 소스 코드 및 자산으로 디컴파일할 수 있습니다(Microsoft 마찬가지로).NET 파일을 디컴파일 할 수 있습니다).일부 디컴파일러는 원본 파일을 거의 완전히 재구성할 수 있으며, 생성 중에 사용된 실제 코드까지 가능합니다(단, 결과는 경우에 [14][15][16]따라 다릅니다).

디컴파일러와 반대로 ActionScript 난독화기는 프로그램의 기능과 구조를 유지하면서 디컴파일러 출력을 차단하는 형태로 코드를 변환합니다.고품질 난독화자는 식별자 이름 변경, 제어 흐름 변환 및 데이터 추상화 변환과 같은 어휘 변환을 구현하여 디컴파일러가 인간에게 유용할 수 있는 출력을 생성하기 어렵게 만듭니다.덜 강력한 난독화자는 디컴파일러용 트랩을 삽입합니다.이러한 난독화로 인해 디컴파일러 소프트웨어가 예기치 않게 크래시되거나 알 수 없는 소스 [citation needed]코드가 생성됩니다.

다음은 디컴파일러 프로그램에 의해 생성된 ActionScript 3.0 코드, 난독화 [original research?]전후에 대한 예입니다.

난독화 전 코드:

사적인 기능.getNeighbors(네이버)(i: 인트, j: 인트): 어레이 {   변화하다 a: 어레이 = 신규 어레이();   위해서 (변화하다 k = 0; k < > 8; k++){     변화하다  = i + 인트(neighbor_map[k][1]);     변화하다 nj = j + 인트(neighbor_map[k][1]);     한다면 ( < > 0     >= x사이즈    nj < > 0    nj >= 사이즈)       계속하다.;     a.밀다(감방([][nj]));   }   돌아가다 a; } 

난독화 후 코드:

사적인 기능.getNeighbors(네이버)(_param1: 인트, _param2: 인트): 어레이 {   변화하다 _local3: 어레이 = -(((부울 - !부울!) % ~(정의되어 있지 않다)));   변화하다 _local4: *;   변화하다 _local5: *;   변화하다 _local6: *;   _local3 = 어레이();   _local4 = 1;   위해서 (;//미해결의 뛰어내리다   , _param2 < > 8;_local4++) {     _local5 = (_param1 + 인트(!부울!));     _local6 = (_param2 + 인트(!부울!));     한다면 (진실의){       _param1 = (((//미해결의 다음 값 또는 다음 이름 << > !부울!) + !부울!)  << > 정의되어 있다);       _param1 = (!(!부울!) ^ !부울!);       (!부울! 인스턴스 !부울!);       변화하다 _local1 = (((!부울! ~하듯이 !부울!) + !부울!) == 이것.);       한다면 (!(!부우안! == !부울!)){         -((진실의 << > !부울!)).밀다(감방([_local5][_local6]));       }     }     한다면 (!진실의){       (_local6 < > 1):       (_local6 < > 1);       (_local5 < > 1);     }   } 돌아가다 (_local6); } 

레퍼런스

  1. ^ RFC4329(EcmaScript와 호환되는 제한)
  2. ^ "Apple's lost decade, HyperCard, and what might NOT have been if Apple then was like Apple is today". zdnet.com. April 17, 2011. Retrieved December 4, 2014.
  3. ^ "ActionScript 3 Language Specification". Archived from the original on March 27, 2017. Retrieved November 12, 2016.
  4. ^ Brimelow, Lee (August 18, 2008). "Six reasons to use ActionScript 3.0". Adobe Systems Incorporated. Retrieved June 18, 2010.
  5. ^ Grossman, Gary; Huang, Emmy (June 27, 2006). "ActionScript 3.0 overview". Adobe Systems Incorporated. Retrieved June 18, 2010.
  6. ^ "Standard ECMA-262". Ecma-international.org. Retrieved April 22, 2013.
  7. ^ Waldemar Horwat, ed. (June 30, 2003). "ECMAScript 4 Netscape Proposal". Netscape. Archived from the original on July 11, 2007. Retrieved April 11, 2019.
  8. ^ "Flash Player Adobe Flash Player 11 Overview". Adobe.com. April 9, 2013. Retrieved April 22, 2013.
  9. ^ "Adobe Labs – Adobe Flash Player 10.1". Labs.adobe.com. Archived from the original on January 5, 2010. Retrieved December 17, 2009.
  10. ^ "Flash Player 11 and AIR 3 Release Notes for Adobe Labs" (PDF). Archived from the original (PDF) on July 14, 2011.
  11. ^ "Flash Player 11, AIR 3 Release Notes". helpx.adobe.com. Retrieved October 7, 2016.
  12. ^ a b "Data type descriptions + Flash CS3 Documentation". Archived from the original on November 2, 2007. Retrieved July 13, 2007.
  13. ^ "Flex 3 – Function parameters". Livedocs.adobe.com. Archived from the original on February 12, 2009. Retrieved December 17, 2009.
  14. ^ "Third party review of another decompiler". Flashmagazine.com. October 21, 2007. Archived from the original on June 20, 2017. Retrieved April 22, 2013.
  15. ^ "Customer comments on one Flash decompiler". Topshareware.com. Retrieved April 22, 2013.
  16. ^ 2006년 8월 18일 Wayback Machine에서 아카이브된 또 다른 플래시 제품대한 고객 의견

외부 링크