Просмотр полной версии : Вопрос о NetConnection и AMFPHP Services
Stepan Galkin
23.08.2006, 21:59
Есть кусок кода:
import flash.net.*;
NetConnection.defaultObjectEncoding = ObjectEncoding.AMF0;
public var gateway:NetConnection = new NetConnection();
public function initApplication():void
{
gateway.connect("http://test.test.com/flashservices/gateway.php");
trace(gateway.connected.toString());
}
Запускаю скомпилированную флешку локально (из папки проекта во Flex Builder'e 2.0) - все работает, gateway.connected - TRUE. Запускаю с test.com или с другого хоста (AMFPHP services расположены на том же хосте, что и SWF-ка) - перестает работать, gateway.connected - FALSE.
Не могу понять в чем дело? Что-то связанное с Security флеш-плейера? Буду очень признателен за помощь!
Спасибо.
Ага, что-то связанное с секьюрити.
Я бы юзал относительные пути, проблем меньше будет.
Да, локально сложно проверять, зато в онлайне всё норм должно быть.
а что ты сразу то трайсишь? чтобы законектиться надо же с сервером пообщаться а это асинхронно с кодом, подписывайся на евент и буит тебе счастье
код из хелпа:
package {
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;
public class NetConnectionExample extends Sprite {
private var videoURL:String = "Video.flv";
private var connection:NetConnection;
private var stream:NetStream;
public function NetConnectionExample() {
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);
}
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Stream not found: " + videoURL);
break;
}
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function connectStream():void {
var stream:NetStream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.client = new CustomClient();
var video:Video = new Video();
video.attachNetStream(stream);
stream.play(videoURL);
addChild(video);
}
}
}
class CustomClient {
public function onMetaData(info:Object):void {
trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
}
public function onCuePoint(info:Object):void {
trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
}
}
Kasimowsky
20.10.2006, 17:02
Здравствуйте, у меня та же проблема. Но работаю я без флекса. И в хелпе у меня такого нет. Т.е. в классы mx закинул пакет remoting запустил флашку, вставил импорт класса NetServices, прописываю пути гейтвея и т.д. На локальном работает, на хосте нет (уже и crossdomain.xml с разрешениями поставил и Allow(In)SecureDomain, все равно). Пожалуйста, скажите что нужно сделать, чтобы "было счастье"? :)
Дело в путях? Сейчас проверю.
Kasimowsky
20.10.2006, 17:29
Дело в путях? Сейчас проверю.Нет. Нет разницы, все равно не коннектится.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.