2012-01-30 4 views
2

효과적으로 스프라이트 작성자 인 프로그램을 만들고 있습니다. 저는 AS3을 처음 접했지만 JQuery, JS, PHP 등을 알고 있습니다. 캐릭터를 사용자 정의하기 위해 조각을 선택하는 여러 단계를 거친 후에는 fileReference()를 사용하여 최종 제품을 다운로드 할 수 있어야합니다. 모든 것이 작동하고 마지막에 이미지를 다운로드 할 수 있지만 문제는 스테이지에서 여러 영화 클립을 모두 캡처 할 수 없다는 것입니다. 단 하나만 캡처 할 수 있습니다. 아마도 이것은 명확히하는 데 도움이 될 것입니다 :여러 비트 맵 객체를 하나로 병합하여 PNGEncoder를 사용하여 인코딩 할 수 있습니까?

// add listener to the download button 
dl_b.addEventListener(MouseEvent.CLICK, save_emote); 

function save_emote(e:MouseEvent):void{ 
    var bData:BitmapData = new BitmapData(50, 50); 
    var bData_eyes:BitmapData = new BitmapData(50, 50); 


    bData.draw(emptyMC_mc); 
    bData_eyes.draw(emptyMC_eyes); 

    // none of these worked, so they have been commented out 
    //bData.draw(emptyMC_a); 
    //bData.draw(emptyMC_mouth); 
    //bData.draw(emptyMC_hand_l); 
    //bData.draw(emptyMC_hand_r); 


    // possible to use two bitmapDatas to merge into single? 
    var byteArray:ByteArray = PNGEncoder.encode(bData); 

    var fileReference:FileReference = new FileReference(); 
    fileReference.save(byteArray, 'myEmote.png'); 
    replay_b.visible = true; 
    upload_b.visible = true; 
    back_b.visible = false; 
    user_color.clear(); 
    user_eyes.clear(); 
    user_mouth.clear(); 
    user_a.clear(); 
    hand_l.clear(); 
    hand_r.clear(); 
    mouth_coords.clear(); 
    eye_coords.clear(); 
} 

나는 그것이 어떻게 작동하는지 알 수 없다. .merge() 메서드를 사용해 보았는데, 지금 인터넷 검색을 시도해 보았습니다. 두 개의 개별 bitmapData 객체를 만든 다음 다른 하나를 그려서 병합하려고했습니다. 아무 것도 정말로 저에게 효과적이었습니다. 당신이 이미지를 저장하는 지점에 도착하는 길을 프로그램을 살펴보고 클릭합니다

, 당신은 여기에 그것을 밖으로 시도 할 수 있습니다 : http://dl.dropbox.com/u/3666815/mote-machine-main.html

당신은에 이미지를 저장하면 결국, 당신은이 문제를 직접 보게 될 것입니다. 나는 좋은 답변을 찾을 수 없었기 때문에 누군가가 도울 수 있다면 철저히 감사 할 것입니다!

미리 감사드립니다.

편집 : 다음은 스프라이트를 컨테이너로 설정하는 방법입니다.하지만 지금은 빈 캔버스를 저장하는 것으로 보입니다.

var emote:Sprite = new Sprite(); 
    emote.addChild(emptyMC_mc); 
    emote.addChild(emptyMC_eyes); 
    emote.addChild(emptyMC_hand_l); 
    emote.addChild(emptyMC_hand_r); 
    emote.addChild(emptyMC_mouth); 
    if(user_a.data.accessory != "none"){ 
      emote.addChild(emptyMC_a); 
    } 

    var bData:BitmapData = new BitmapData(80, 80); 

    bData.draw(emote); 

스프라이트에 추가 할 각 영화 클립에 자체 자식이있을 수 있습니까?

답변

2

스프라이트와 같은 일종의 표시 객체 컨테이너에 비트 맵을 배치하면 나중에 "draw"및/또는 "copyPixels"메서드를 사용하여 컨테이너의 비트 맵 데이터를 가져올 수 있습니다. 그들의 적절한 장소에 아이들의. 그것은 당신이 필요로하는 것을해야합니다.

+0

안녕하세요! 답변 해주셔서 감사합니다. save_emote 함수에 스프라이트를 추가하고 스테이지에 MC를 자식으로 연결하려고했지만 웬일인지 빈 캔버스를 저장하는 것처럼 보입니다. 나는 새로운 Sprite()를 설정하고 bitmapData 객체는 .draw (스프라이트)를 사용한다. 내가 그걸 어떻게 권하고 싶니? 나는 새로운 코드로 나의 초기 질문을 편집했다. – SanguineEpitaph

+0

알았어, 긁어. 나는 movieclips의 자식을 스프라이트에 연결하여 작동하도록했습니다. 이제는 PNG에 모두 저장할 수 있습니다. 올바른 위치 지정 방법을 찾아야합니다. 도와 줘서 고마워! – SanguineEpitaph