2016-07-21 11 views
1

SharedObject를 사용하여 간단한 채팅 응용 프로그램을 만듭니다. SharedObject가 잘 만들어졌고 다른 클라이언트가 SO에서 데이터를 업데이트 할 때 내 앱이 동기화 이벤트를 수신 할 수있었습니다. 그러나 문제는 내 응용 프로그램이 다른 클라이언트에 신호를 보내도록 SO에 데이터를 저장하려고 할 때 발생합니다. 다음 코드를 사용하여 데이터가 변경되었는지 확인했습니다.SharedObject : 다른 클라이언트에서 이벤트를받을 수는 있지만 데이터를 저장 한 후에는 이벤트가 발생하지 않습니다.

trace("before:"+so.data.chatMessage); 
so.data.chatMessage = msg.text; 
trace("after:"+so.data.chatMessage); 

"before : abc"및 "after : def"라고 말했습니다. 불행히도 데이터 변경을 한 클라이언트를 포함하여 SO 데이터가 변경된 후에는 어떤 클라이언트도 동기화 이벤트를받지 못했습니다. 즉,이 클라이언트는 다른 클라이언트의 메시지를받을 수 있지만 메시지 자체는 절대 나올 수 없음을 의미합니다.

누구나 전에이 문제를 봤어? 감사합니다, 잭

+0

당신은'so.flush()'를 사용 했습니까? – Vesper

+0

나는 그것을 몰랐다. so.flush를 호출하면 "Error : Error # 2130 : SharedObject를 플러시 할 수 없습니다."라는 오류가 발생했습니다. 그것은 내부 오류를 인쇄하지 않았다. 그래서 플러시가 성공할 수 없다는 것이 문제였던 것 같습니다. 어떻게 될 수 있었는지 생각해보십시오. 감사. –

+0

@Vesper, BTW, getLoal 대신 getRemote를 사용하여 SO를 작성 했으므로 so.flush()를 호출해야합니까? 나는 문서를 읽었고, flush() 호출이 getLocal()과 getRemote() SO를위한 것이었다면 나에게 너무 명확하지 않았다. –

답변

2

당신은 flush() 전화를해야 : 당신은 단지 data 객체의 속성을 변경으로

Updates the value of a property in a shared object and indicates to the server that the value of the property has changed.

:

If you don't use this method, Flash Player writes the shared object to a file when the shared object session ends — that is, when the SWF file is closed, when the shared object is garbage-collected because it no longer has any references to it, or when you call SharedObject.clear() or SharedObject.close() .

또는

사용 setProperty()이 속성을 변경하려면 이 값이 변경되었다는 알림이 없습니다.

Calling so.flush() resulted in "Error: Error #2130: Unable to flush SharedObject." It did not print an internal error, though. So it seems the problem was the flush couldn't be successful... Any idea how could happen?

이 다른 질문을 살펴 보자 :

Error #2130 Unable to flush sharedObject

+0

getRemote()를 사용하여 SO를 만든 경우 여전히 그렇습니까? 나는 flush()를 호출하고 "Error : Error # 2130 : SharedObject를 플러시 할 수 없습니다."라는 오류 메시지가 나타납니다. –

+0

@JackX. 내 대답을 편집하여 다른 제안을 포함 시켰습니다. – null

+0

setProperty() 접근 방식이 효과가있었습니다! 나는 이것에 대해 두 시간을 보냈고 당신은 나를 구해주었습니다. 고마워요! –