:
사용자가 마우스 드래그하여 특정 영역을 표시하고 그에 따라 주석을 추가 할 수 있습니다. 마크 업과 주석은 데이터베이스에 저장됩니다.
한 번에 하나의 이미지 만 확대되며이 이미지는 모든 마크 업을 표시해야합니다. 마크 업을 클릭하면 연관된 주석을 보여주는 팝업이 표시됩니다.
마크 업을 그리는 것은 비용이 많이 들기 때문에 사용자가 이미지를 전환 할 때 특정 마크 업을 다시 사용해야합니다. 질문은 지금 :
이미지에 표시된 마크 업을 재사용하는 방법은 무엇입니까?
답변 :
사용 Object
또는 하나 개의 이미지 당 항목 및 마크 업의 Array
에 대한 진입 점을 만들 Dictionary
. 이지도의 기능을 캡슐화하는 편리한 클래스를 만들 수 있습니다 :
package {
import flash.display.DisplayObject;
public class Markups {
private var _map : Object;
public function Markups() {
_map = new Object();
}
public function addMarkup(imageId : String, markup : DisplayObject) : void {
if (!_map[imageId]) _map[imageId] = new Array();
(_map[imageId] as Array).push(markup);
}
public function hasMarkups(imageId : String) : Boolean {
return _map[imageId] !== undefined;
}
public function getMarkups(imageId : String) : Array {
return _map[imageId];
}
public function removeMarkup(imageId : String, markup : DisplayObject) : void {
var markups : Array = _map[imageId];
var index : int = markups.indexOf(markup);
markups.splice(index, 1);
if (!markups.length) delete _map[imageId];
}
}
}
저장이지도를 이미지 컨테이너에서 액세스 할 수있는 장소에서.
var markupsPerImage : Markups = new Markups();
추가 또는 같은 마크 업 제거 : 사용자가 현재 이미지를 변경할 때마다
markupsPerImage.addMarkup(myImage.id, markupView);
markupsPerImage.removeMarkup(myImage.id, markupView);
당신 1. 정리지도에 저장된 모든 마크 업 마지막 2. 추가 모든 마크 업. 이미지 컨테이너에서
:
public function setImage(myImage : MyImage) : void {
// remove markups
while (markupContainer.numChildren) {
markupContainer.removeChildAt(0);
}
// add markups
var markups : Array = markupsPerImage.getMarkups(myImage.id);
var markup : MarkupView;
foreach (markups as markup) {
markupContainer.addChild(markup);
}
}
참고 :
이
예제 코드는 모든 마크 업을 호스팅하는 마크 업 컨테이너를 가정합니다. 이 컨테이너에는 마크 업 맵에 대한 참조가 있어야합니다.
아직 이해가 안됩니다. 당신은 하나의 이미지 또는 다른 이미지를 가지고 있습니까? 사용자는 정확히 무엇입니까? 특수 효과를 새로 고침 할 이벤트가 있습니까? 단일 이미지에 대한 주석 인스턴스가 여러 개 있습니까? 컬렉션 스토어는 무엇을 저장해야합니까? x, y, w, h? –
주석은 텍스트입니까? 코드에는 그려진 선만이 표시됩니다. –
@Jens Struwe - 예, 이미지 갤러리가 있습니다. 이미지는 둘 이상의 주석을 가질 수 있습니다. 내가 나중에 내 사용자가 특정 이미지의 주석을 편집/삭제할 수 있도록 주석 컬렉션 이미지를 저장하려고합니다.사용자가 이미지에서 마킹을 시작하면이 자식을 직접 이미지에 추가하고 싶지 않습니다. 이 주석을 이미지에 추가 된 컬렉션에 추가하고 싶습니다. 해당 컬렉션을 통해 특정 주석을 제거/편집 할 수 있습니다. –