Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 09.06.2012, 15:22   #1
Черный крыс
 
Сообщений: n/a
TStreamFactoryWWW

Написал небольшой класс, который позволяет без гемороя качать ресурсы с инета.

Type TStreamFactoryWWW Extends TStreamFactory
	Method CreateStream:TStream( url:Object,proto$,path$,readable,writeable )
		If proto = "www"
			Local stream:TStream = ReadStream("http::"+path)
			If Not stream Then Return Null
			Local temp:TStream = WriteStream("temp")
			Repeat
				temp.WriteByte(stream.ReadByte())
			Until stream.Eof()
			stream.Close()
			temp.Close()
			Return ReadStream("temp")
		End If
	End Method
End Type
New TStreamFactoryWWW
юзаем так : LoadImage("www::blitzbasic.com/img/master_of_defence.jpg")
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
Dzirt (09.06.2012), moka (10.06.2012), SBJoker (09.06.2012)
Старый 10.06.2012, 16:46   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: TStreamFactoryWWW

Ещё бы в отдельном потоке и кеширование с докачкой.. :D
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 17:38   #3
Черный крыс
 
Сообщений: n/a
Ответ: TStreamFactoryWWW

Сообщение от MoKa Посмотреть сообщение
кеширование с докачкой.. :D
SuperStrict

Graphics 1024, 768
AutoMidHandle(True)

Type TStreamFactoryWWW Extends TStreamFactory
	Method CreateStream:TStream(url:Object, proto:String, path:String, readable:Int, writeable:Int)
		If proto = "www"
			Local ping:Int = 100
			Local stream:TStream
			DeleteFile("temp")
			Local temp:TStream = WriteStream("temp")
			Repeat
				If stream
					If stream.Eof() Then Exit
					temp.WriteByte(stream.ReadByte())
					Continue
				End If
				If ping = 0 Then Return Null
				stream = ReadStream("http::" + path)
				If stream Then stream.SkipBytes(temp.Size())
				ping:-1
			Forever
			stream.Close()
			temp.Close()
			Return OpenStream("temp", readable, writeable)
		End If
	End Method
End Type
New TStreamFactoryWWW

Local image:TImage = LoadImage("www::www.blitzbasic.com/img/master_of_defence.jpg")

While Not KeyHit(KEY_ESCAPE)
	Cls
	SetBlend(ALPHABLEND)
	SetAlpha(1.0)
	SetColor(255,255,255)
	SetTransform()
	DrawImage(image,MouseX(),MouseY(),0)
	Flip(1)
Wend

End
Про это ?

Насчет птоков, в БМаксе есть потоки... помоему лучше поточный даунлоад организовать отдельно
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (10.06.2012)
Старый 10.06.2012, 19:17   #4
Черный крыс
 
Сообщений: n/a
Ответ: TStreamFactoryWWW

Эта версия получше (с проверкой сокета )

SuperStrict

Graphics 1024, 768
AutoMidHandle(True)

Type TStreamFactoryWWW Extends TStreamFactory
	Method CreateStream:TStream(url:Object, proto:String, path:String, readable:Int, writeable:Int)
		If proto = "www"
			Local ping:Int = 100
			Local stream:TSocketStream
			DeleteFile("temp")
			Local temp:TStream = WriteStream("temp")
			Repeat
				If stream
					If stream.Eof() Then Exit
					If SocketConnected(stream._socket)
						temp.WriteByte(stream.ReadByte())
						Continue
					EndIf
					stream = Null
				End If
				If ping = 0 Then Return Null
				stream = TSocketStream(ReadStream("http::" + path))
				If stream Then stream.SkipBytes(temp.Size())
				ping:-1
			Forever
			stream.Close()
			temp.Close()
			Return OpenStream("temp", readable, writeable)
		End If
	End Method
End Type
New TStreamFactoryWWW

Local image:TImage = LoadImage("www::www.blitzbasic.com/img/master_of_defence.jpg")

While Not KeyHit(KEY_ESCAPE)
	Cls
	SetBlend(ALPHABLEND)
	SetAlpha(1.0)
	SetColor(255, 255, 255)
	SetTransform()
	DrawImage(image,MouseX(),MouseY(),0)
	Flip(1)
Wend

End
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 19:43.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com