이것은 처음 보는 게시물이므로 최대한 명확하게 질문을 드리겠습니다. hereHTML5의 대화식 이미지
이 라이브러리를 같이 나는 배경 드래그, 크기를 재조정 할 이미지를 생성하기 위해 HTML5 캔버스 요소를 조작하기위한 도서관과 협력 한 것은 canvasImg
, canvasElement
야후 유틸리티에 대한 라이브러리를 MIT는 라이센스 사용합니다. 첫 번째 게시 상태로 인해이 라이브러리에 하이퍼 링크를 포함 할 수는 없지만 모두 예제에 포함되어 있습니다.
저는 약간의 수정을 통해 비슷한 것을 달성하려고합니다. 첫째, 위의 모든 예제는 iframe
에서 이루어집니다. 저는 페이지에서 상대 위치로 일정한 크기의 캔버스를 만들고 싶습니다. 그리고 제가하는 일에 iframe
이 필요하지 않다고 생각합니다.
사람들이 수학 문제를 설명하는 데 도움이 될 것이므로 문제가있는만큼 모든 것을 새로운 캔버스로 표시하려고합니다. 문제는 클라이언트 측에서 " 새로운 문제 "버튼을 누릅니다. 그것이 충분하지 않다면, 같은 페이지에서 다른 MathDox 캔버스를 간섭하지 않도록 설정해야합니다.
이<script type="text/javascript">
//<![CDATA[
$(init);
probNum = 1;//global var for problem printing
//CANVAS STUFF
canvas = [];
img = [];
//MATHDOX OPTIONS
//Define mathdox options
if (org) {
alert("org already defined, could not set options");
} else {
var org = { mathdox: { formulaeditor: { options: {
dragPalette:true,
paletteShow: "none",
useBar:true
}}}};
}
function init(){
//PROBLEM ADDING
$("#add_problem").click(addProblem);
addProblem();
//TOPIC SELECTION
//load list from database
$("#topic0").load("<?=base_url()?>ajax/load_topic_list", {"parent_topic":0});
//when new topic is selected make a new list
$("#topic0").change(nextList);
//if no topic is selected, prevent submit
$("form").submit(function() {
if ($("#topic").val() == '-1')
{
$('#error').html("You must select a valid topic");
return false;
}
});
}//end init
function addProblem()
{
//write everything, but of course without any values
$('#output').append("<br /><h4>Problem Number " + probNum + "</h4>");
$('#output').append("<canvas id='canvas"+probNum+"'></canvas>")
$('#output').append("<textarea class='mathdoxformula' id='formula"+probNum+"' rows='10' cols='80'></textarea><br />\n");
$('#output').append("<textarea id='txt"+probNum+"'></textarea>\n");
$("#num_probs").val(probNum);
//Make a new canvas
canvas[probNum] = new Canvas.Element();
canvas[probNum].init(('canvas'+probNum), { width: 400, height: 400});
img[img.length] = new Canvas.Img('img1', {});
img[img.length] = new Canvas.Img('img2', {});
img[img.length] = new Canvas.Img('img3', {});
canvas[probNum].addImage(img[0]);
canvas[probNum].addImage(img[1]);
canvas[probNum].addImage(img[2]);
canvas[probNum].setCanvasBackground(img[2]);
//make new formula box
if (!org)
{
alert("no org");
}
org.mathdox.formulaeditor.FormulaEditor.updateByTextAreas();
//increment problem
probNum++;
}
//More javascript to make the problem selector. I should really start organizing this stuff
var numSelects = 1;
function nextList() {
//define default values for current id, parent and next index
var topicID = $(this).val();
var parIndex = $('li').index($(this).parent());
var nextIndex = $('li').index($(this).parent())+1;
//when selecting a new topic, destroy all old subselections
$("#topic_list").children().slice(nextIndex).remove();
//set new topic id
$("#topic").val(topicID);
//if it didn't go to zero, append a new topic
if (topicID != "-1")
{
$('#topic_list').append("<li><select id='topic"+nextIndex+"'></select></li>");
$('#topic'+nextIndex).load("<?=base_url()?>ajax/load_topic_list", {"parent_topic":topicID});
$('#topic'+nextIndex).change($.proxy(nextList, $('#topic'+nextIndex)));
}
}
//]]>
</script>
<img id="img1" class="canvas-img" src="<?=base_url()?>images/canvas/7.jpg" />
<img id="img2" class="canvas-img" src="<?=base_url()?>images/canvas/8.jpg" />
<img id="img3" class="canvas-img" src="<?=base_url()?>images/canvas/9.jpg" />
<!--Button to replicate and form closing-->
<div class="container">
<button id="add_problem" type="button">Add another problem</button>
</div>
//and more stuff
주제 선택 것은 아니다 내가 일하고 있어요 무엇을, 난 그냥 완성도를 포함 :
여기에 지금까지 내 코드입니다.내가 겪고있는 문제 중 일부는 스타일과 관련이있을 수 있습니다. 캔버스가 제대로 쌓이지 않고 행이 늘어서도 이미지가 삽입되지만 끌지는 않습니다. 또는 크기를 조정할 수 있습니다. 초보자에게 익숙하지 않은 문서를 찾는 데 어려움을 겪고 있습니다. 실제로이 문제가 제가 제대로 조사하지 않는 간단한 문제라면, 문제가 생겨서 죄송합니다. & 알려주세요.
결국 버튼으로 이미지를 삽입하고 싶지만 예제 에서처럼 캔버스를 올바르게 가져올 수 있다면 행복 하겠지만 내 addProblem()
기능으로 재생산 할 수는 있습니다.
답장을 보내 주셔서 감사합니다. 나도 내 메인 페이지 코드에서 할 수있는만큼 야후 라이브러리를 사용하지 않으려 고 노력했다. 왜냐하면 필자는 실제로 익숙하지 않았기 때문에 jquery에 훨씬 익숙 할 것이기 때문이다. 내 디버깅은 나에게 스타일 문제를 나타내는 streight up 외모만큼 많은 오류를주지 않습니다. – Luciasar00