2
여기에 객체 배열을 만드는 actionscript3 코드가 있습니다. 기본적으로 배열에는 동일한 객체의 인스턴스가 여러 개 있습니다. 개체를 90도 회전시키는 f0 함수를 호출하는 이벤트 리스너를 만들고 싶습니다. 내 문제는 배열에있는 각 개체에 고유 한 식별자를 할당하는 방법을 찾을 수 없다는 것입니다. 따라서 개체를 클릭 할 때 배열을 회전 시키지만 배열의 첫 번째 요소 만 회전합니다. 또한 객체가 (0,0)으로 회전하지 않도록 회전을 중앙에 배치하려고합니다.actionscript3의 객체 배열에 고유 식별자 할당
package
{
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.ColorTransform;
public class Main extends Sprite
{
var array = new Array();
var i:int;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
for (var i:int = 0; i < 10; i++)
{
var asd:Sprite = new Sprite();
asd.graphics.beginFill(0x0000ff);
asd.graphics.drawRect(0, 0, 60, 60);
array.push(asd);
addChild(array[i]);
array[i].x = 60 * i ;
array[i].y = 60 * i ;
array[i].addEventListener(MouseEvent.CLICK, f0);
if (i % 2 == 0) {
asd.graphics.lineTo(asd.x + 60, asd.y + 60);
}
removeEventListener(Event.ADDED_TO_STAGE, init);
}
}
private function f0(e:Event):void
{
array[i].rotation += 90;
}
}
}
이제는 함수 rotateAroundCenter의 이벤트 처리기에서 객체에 대한 포인터를 추가 할 때 오류가 발생합니다. col : 25 오류 : 정적 유형 객체를 사용하는 값과 관련없는 유형의 암시 적 강제 형변환 flash.display : DisplayObject.private 기능 F0 (예 : 이벤트) : 보이드 \t \t 개인 함수 (F0) (예 : 이벤트) : 보이드 \t \t \t \t { \t rotateAroundCenter (e.target, 90); \t \t} – wedran
오브젝트를 DisplayObject 또는 DisplayObject로 event.target을 사용하여 표시 오브젝트에 캐스팅 할 수 있습니다. –
아, 작동합니다, 많은 감사합니다! – wedran